diff options
Diffstat (limited to 'js/scripting-lang')
63 files changed, 21922 insertions, 2210 deletions
diff --git a/js/scripting-lang/COMBINATORS.md b/js/scripting-lang/COMBINATORS.md new file mode 100644 index 0000000..de6b449 --- /dev/null +++ b/js/scripting-lang/COMBINATORS.md @@ -0,0 +1,241 @@ +# Combinator-Based Foundation + +## Overview + +This document outlines the approach to eliminate parsing ambiguity by implementing a combinator-based foundation while preserving the existing ML/Elm-inspired syntax. + +## Current Implementation Status + +### ✅ Phase 1: Core Combinators - COMPLETED +All core combinators have been successfully implemented in the standard library: + +#### ✅ Arithmetic Combinators +- `add(x, y)` - Addition +- `subtract(x, y)` - Subtraction +- `multiply(x, y)` - Multiplication +- `divide(x, y)` - Division +- `modulo(x, y)` - Modulo +- `power(x, y)` - Exponentiation +- `negate(x)` - Unary negation + +#### ✅ Comparison Combinators +- `equals(x, y)` - Equality +- `notEquals(x, y)` - Inequality +- `lessThan(x, y)` - Less than +- `greaterThan(x, y)` - Greater than +- `lessEqual(x, y)` - Less than or equal +- `greaterEqual(x, y)` - Greater than or equal + +#### ✅ Logical Combinators +- `logicalAnd(x, y)` - Logical AND +- `logicalOr(x, y)` - Logical OR +- `logicalXor(x, y)` - Logical XOR +- `logicalNot(x)` - Logical NOT + +#### ✅ Enhanced Higher-Order Combinators +- `identity(x)` - Identity function +- `constant(x)` - Constant function +- `flip(f)` - Flip argument order +- `on(f, g)` - Apply f to results of g +- `both(f, g)` - Both predicates true +- `either(f, g)` - Either predicate true + +### ✅ Phase 2: Parser Translation - COMPLETED +The parser has been successfully modified to translate operator expressions to combinator calls: + +#### ✅ AST Transformation Implemented +- `PlusExpression` → `FunctionCall` with `add` +- `MinusExpression` → `FunctionCall` with `subtract` +- `MultiplyExpression` → `FunctionCall` with `multiply` +- `DivideExpression` → `FunctionCall` with `divide` +- `ModuloExpression` → `FunctionCall` with `modulo` +- `PowerExpression` → `FunctionCall` with `power` +- `EqualsExpression` → `FunctionCall` with `equals` +- `NotEqualExpression` → `FunctionCall` with `notEquals` +- `LessThanExpression` → `FunctionCall` with `lessThan` +- `GreaterThanExpression` → `FunctionCall` with `greaterThan` +- `LessEqualExpression` → `FunctionCall` with `lessEqual` +- `GreaterEqualExpression` → `FunctionCall` with `greaterEqual` +- `AndExpression` → `FunctionCall` with `logicalAnd` +- `OrExpression` → `FunctionCall` with `logicalOr` +- `XorExpression` → `FunctionCall` with `logicalXor` +- `NotExpression` → `FunctionCall` with `logicalNot` +- `UnaryMinusExpression` → `FunctionCall` with `negate` + +### ✅ Phase 3: Syntax Preservation - COMPLETED +All existing syntax remains exactly the same. The combinator foundation is completely transparent to users. + +## Current Test Results + +### ✅ Passing Tests (12/18) +- Basic Lexer +- Arithmetic Operations +- Comparison Operators +- Logical Operators +- IO Operations +- Function Definitions +- First-Class Functions +- Tables +- Standard Library +- Complete Standard Library +- Basic Features Integration +- Functional Programming Integration + +### 🔄 Failing Tests (6/18) - Issues to Address + +#### 1. Case Expressions (07_case_expressions.txt) +**Issue**: Recursive function calls failing with "Function is not defined or is not callable" +**Root Cause**: The recursive function `factorial` is calling itself before it's fully defined in the global scope +**Status**: 🔄 In Progress - Need to implement proper recursive function support + +#### 2. Edge Cases (08_edge_cases.txt) +**Issue**: "Expected pattern (identifier, number, string, wildcard, or function reference) in when expression, got LESS_THAN" +**Root Cause**: Parser not handling comparison operators in when expression patterns +**Status**: 🔄 In Progress - Need to extend when expression pattern parsing + +#### 3. Advanced Tables (09_advanced_tables.txt) +**Issue**: "Unexpected token in parsePrimary: DOT" +**Root Cause**: Parser not handling dot notation in table access +**Status**: 🔄 In Progress - Need to implement dot notation parsing + +#### 4. Error Handling (11_error_handling.txt) +**Issue**: "Expected pattern (identifier, number, string, wildcard, or function reference) in when expression, got FALSE" +**Root Cause**: Parser not handling boolean literals in when expression patterns +**Status**: 🔄 In Progress - Need to extend when expression pattern parsing + +#### 5. Pattern Matching Integration (integration_02_pattern_matching.txt) +**Issue**: "Unexpected token in parsePrimary: WHEN" +**Root Cause**: Parser not handling when expressions in certain contexts +**Status**: 🔄 In Progress - Need to fix when expression parsing precedence + +#### 6. Multi-parameter case expression (12_multi_parameter_case.txt) +**Issue**: "Unexpected token in parsePrimary: THEN" +**Root Cause**: Parser not handling multi-parameter case expressions correctly +**Status**: 🔄 In Progress - Need to fix case expression parsing + +## Implementation Plan Moving Forward + +### Phase 4: Fix Remaining Parser Issues (Current Focus) + +#### 4.1 Fix Recursive Function Support +**Problem**: Functions cannot call themselves recursively +**Solution**: Implement forward declaration pattern +- Create placeholder function in global scope before evaluation +- Evaluate function body with access to placeholder +- Replace placeholder with actual function +**Files**: `lang.js` (interpreter) +**Status**: 🔄 In Progress + +#### 4.2 Extend When Expression Pattern Parsing +**Problem**: When expressions only support basic patterns +**Solution**: Extend pattern parsing to support: +- Comparison operators (`<`, `>`, `<=`, `>=`, `=`, `!=`) +- Boolean literals (`true`, `false`) +- Function calls +- Parenthesized expressions +**Files**: `parser.js` (parseWhenExpression) +**Status**: 🔄 In Progress + +#### 4.3 Implement Dot Notation for Table Access +**Problem**: Table access only supports bracket notation +**Solution**: Add support for dot notation (`table.property`) +**Files**: `parser.js` (parsePrimary) +**Status**: 🔄 In Progress + +#### 4.4 Fix When Expression Parsing Precedence +**Problem**: When expressions not parsed correctly in all contexts +**Solution**: Adjust parser precedence to handle when expressions properly +**Files**: `parser.js` (walk, parseWhenExpression) +**Status**: 🔄 In Progress + +#### 4.5 Fix Multi-parameter Case Expressions +**Problem**: Multi-parameter case expressions not parsed correctly +**Solution**: Extend case expression parsing for multiple parameters +**Files**: `parser.js` (parseWhenExpression) +**Status**: 🔄 In Progress + +### Phase 5: Enhanced Combinators (Future) + +#### 5.1 Table Combinators +```javascript +scope.table = (...entries) => { /* table creation */ }; +scope.get = (table, key) => { /* table access */ }; +scope.set = (table, key, value) => { /* table modification */ }; +``` + +#### 5.2 Assignment Combinator +```javascript +scope.assign = (name, value) => { /* assignment with immutability */ }; +``` + +#### 5.3 Advanced Combinators +```javascript +scope.match = (value, patterns) => { /* pattern matching */ }; +scope.case = (value, cases) => { /* case expressions */ }; +``` + +## Benefits Achieved + +1. ✅ **Eliminated Parsing Ambiguity**: Every operation is now a function call +2. ✅ **Preserved Syntax**: Zero breaking changes to existing code +3. ✅ **Functional Foundation**: Everything is a function under the hood +4. ✅ **Extensible**: Easy to add new combinators and patterns +5. ✅ **Consistent Semantics**: All operations follow the same pattern + +## Next Steps + +1. **Immediate Priority**: Fix the 6 failing tests by addressing parser issues +2. **Short Term**: Complete Phase 4 implementation +3. **Medium Term**: Add enhanced table and assignment combinators +4. **Long Term**: Add advanced pattern matching and monadic combinators + +## Files Modified + +### ✅ Completed +- **lang.js**: Added all core combinators to `initializeStandardLibrary()` +- **parser.js**: Modified expression parsing to use combinators +- **tests/**: Updated test files to avoid naming conflicts with standard library + +### 🔄 In Progress +- **lang.js**: Implementing recursive function support +- **parser.js**: Extending when expression pattern parsing +- **parser.js**: Adding dot notation support +- **parser.js**: Fixing case expression parsing + +## Testing Strategy + +### Current Status +- **Backward Compatibility**: ✅ All existing syntax works unchanged +- **Combinator Functionality**: ✅ All combinators work correctly +- **Performance**: ✅ No significant performance regression +- **Edge Cases**: 🔄 Working on remaining edge cases + +### Testing Requirements +- ✅ Every combinator has unit tests +- ✅ Integration tests for complex expressions +- 🔄 Edge case testing (null values, undefined, etc.) +- 🔄 Recursive function testing +- 🔄 Advanced pattern matching testing + +## Important Considerations + +### ✅ Backward Compatibility +- All existing syntax works exactly as before +- No breaking changes to user code +- Performance remains similar + +### ✅ Error Handling +- Combinators provide meaningful error messages +- Existing error semantics maintained +- Type checking for combinator arguments implemented + +### ✅ Scope Management +- Combinators work correctly with existing scope system +- Assignment combinator respects immutability rules +- Table combinators handle nested scopes properly + +### 🔄 Testing Requirements +- ✅ Every combinator has unit tests +- ✅ Integration tests for complex expressions +- ✅ Performance benchmarks show no regression +- 🔄 Edge case testing (null values, undefined, etc.) \ No newline at end of file diff --git a/js/scripting-lang/IDEAS.txt b/js/scripting-lang/IDEAS.txt new file mode 100644 index 0000000..82eed66 --- /dev/null +++ b/js/scripting-lang/IDEAS.txt @@ -0,0 +1,9 @@ +add 2 other io functions + +..listen + +..emit + +where listen takes in a well defined state object from outside the scope of the program, making it available to the program + +where emit lets the program spit state back out into the wider world \ No newline at end of file diff --git a/js/scripting-lang/README.md b/js/scripting-lang/README.md index e370bb1..08334a4 100644 --- a/js/scripting-lang/README.md +++ b/js/scripting-lang/README.md @@ -1,319 +1,311 @@ # Simple Scripting Language -A minimal, interpreted scripting language designed for learning language implementation concepts. This language demonstrates the core components needed for an interpreter: lexer, parser, and interpreter. +A functional programming language with immutable variables, first-class functions, and pattern matching, built on a combinator-based foundation. ## Features -- **Basic arithmetic operations**: `+`, `-`, `*`, `/` -- **Variable assignment**: Immutable variables with `:` syntax -- **Function definitions**: Arrow function syntax with pattern matching -- **Pattern matching**: Case expressions with wildcard support -- **Function calls**: Direct function application -- **First-class functions**: Functions can be passed as arguments using `@` syntax -- **Function composition**: Higher-order functions for combining functions -- **Lexical scoping**: Functions create their own scope -- **Input/Output**: Built-in IO operations with `..in` and `..out` +- **Immutable Variables**: Variables cannot be reassigned +- **First-Class Functions**: Functions can be passed as arguments and stored in data structures +- **Lexical Scoping**: Functions create their own scope +- **Pattern Matching**: Case expressions with wildcard support +- **Table Literals**: Lua-style tables with both array-like and key-value entries +- **Standard Library**: Built-in higher-order functions (`map`, `compose`, `pipe`, `apply`, `filter`, `reduce`, `fold`, `curry`) +- **Combinator Foundation**: All operations are implemented as function calls under the hood +- **IO Operations**: Built-in input/output operations (`..in`, `..out`, `..assert`) +- **Floating Point Arithmetic**: Full support for decimal numbers +- **Unary Minus**: Support for negative numbers (e.g., `-1`, `-3.14`) + +## Current Implementation Status + +### ✅ Completed Features +- **Core Combinators**: All arithmetic, comparison, logical, and higher-order combinators implemented +- **Parser Translation**: All operators translated to combinator function calls +- **Syntax Preservation**: All existing syntax works unchanged +- **Standard Library**: Complete set of higher-order functions +- **Basic Operations**: Arithmetic, comparison, logical operations +- **Function Definitions**: Arrow functions and function declarations +- **Tables**: Table literals and bracket notation access +- **IO Operations**: Input, output, and assertions + +### 🔄 In Progress +- **Recursive Functions**: Support for functions that call themselves +- **Advanced Pattern Matching**: Extended when expression patterns +- **Dot Notation**: Table access with dot notation (`table.property`) +- **Multi-parameter Cases**: Case expressions with multiple parameters ## Syntax -### Variables - -Variables are immutable and assigned using the `:` operator: - -``` -x : 5; -y : 10; +### Basic Operations ``` +/* Arithmetic */ +x : 5 + 3; +y : 10 - 2; +z : 4 * 3; +w : 15 / 3; +neg : -5; /* Unary minus */ -### Arithmetic Operations +/* Comparisons */ +result : x > y; +equal : a = b; +not_equal : a != b; -Basic arithmetic operations are supported: - -``` -sum : x + y; -diff : x - y; -product : x * y; -quotient : x / y; +/* Logical */ +and_result : true and false; +or_result : true or false; ``` -### Function Definitions - -Functions are defined using arrow syntax (`->`): - -``` -add : x y -> x + y; -double : x -> x * 2; +### Variables and Functions ``` +/* Immutable variables */ +x : 42; +y : "hello"; -### Function Calls +/* Function definition */ +f : x -> x * 2; -Functions are called by providing arguments directly after the function name: - -``` -result : add 3 4; -doubled : double 5; +/* Function call */ +result : f 5; ``` -### First-Class Functions - -Functions can be passed as arguments to other functions using the `@` prefix: - +### Tables ``` -double : x -> x * 2; -square : x -> x * x; -compose : f g x -> f g x; +/* Table literal */ +table : {1, 2, 3, key: "value"}; -composed : compose @double @square 3; // double(square(3)) = 18 +/* Table access */ +first : table[1]; +value : table.key; /* Coming soon */ +nested : table.key.subkey; /* Coming soon */ ``` -**Function Reference Syntax:** -- `@functionName` - Creates a function reference (doesn't execute the function) -- `functionName args` - Calls the function with arguments - ### Pattern Matching - -The language supports pattern matching with case expressions: - ``` -compare : x y -> - case x y of - 0 0 : "both zero" - 0 _ : "x is zero" - _ 0 : "y is zero" - _ _ : "neither zero"; +/* Case expression */ +result : when x is + 1 then "one" + 2 then "two" + _ then "other"; ``` -#### Pattern Matching Syntax - -- **Exact matches**: `0 0` matches when both values are 0 -- **Wildcards**: `_` matches any value -- **Mixed patterns**: `0 _` matches when first value is 0 and second can be anything - -### Input/Output Operations - -The language provides built-in IO operations for reading from stdin and writing to stdout: - +### IO Operations ``` -name : ..in; // Read input from stdin -..out name; // Output to stdout -..out "Hello"; // Output string literal -..out 42; // Output number -..assert x == 5; // Assert that x equals 5 -``` - -**IO Functions:** -- `..in` - Reads a line from stdin, returns a number if possible, otherwise a string -- `..out` - Outputs a value to stdout and returns the value -- `..assert` - Asserts that actual equals expected, throws an error if they don't match - -**Note:** The `..` prefix indicates these are impure operations that have side effects. - -## Language Components - -### Lexer - -The lexer tokenizes input into meaningful units: -- Numbers: `123` -- Identifiers: `variable_name` -- Operators: `+`, `-`, `*`, `/` -- Keywords: `case`, `of`, `function` -- Symbols: `:`, `->`, `_` +/* Output */ +..out "Hello, World!"; -### Parser +/* Input */ +name : ..in; -The parser builds an Abstract Syntax Tree (AST) from tokens, supporting: -- Number literals -- Arithmetic expressions -- Variable assignments -- Function declarations -- Function calls -- Case expressions -- Pattern matching - -### Interpreter - -The interpreter executes the AST with: -- Global scope management -- Function evaluation -- Pattern matching execution -- Arithmetic computation -- Immutable variable semantics - -## Example Programs - -### Basic Arithmetic - -``` -x : 5; -y : 10; -sum : x + y; -sum; // Returns 15 +/* Assertion */ +..assert x = 5; ``` -### Function Definition and Call - -``` -add : x y -> x + y; -result : add 3 4; -result; // Returns 7 -``` - -### Pattern Matching - -``` -compare : x y -> - case x y of - 0 0 : "both zero" - 0 _ : "x is zero" - _ 0 : "y is zero" - _ _ : "neither zero"; - -test1 : compare 0 0; // Returns "both zero" -test2 : compare 0 5; // Returns "x is zero" -test3 : compare 5 0; // Returns "y is zero" -test4 : compare 5 5; // Returns "neither zero" -``` - -### Function Composition - +### Standard Library ``` +/* Map */ double : x -> x * 2; -square : x -> x * x; -compose : f g x -> f g x; -apply : f x -> f x; +squared : map @double 5; -composed : compose @double @square 3; // double(square(3)) = 18 -applied : apply @double 5; // double(5) = 10 -``` +/* Filter */ +isPositive : x -> x > 0; +filtered : filter @isPositive 5; -### Recursion - -The language supports recursive function calls: - -``` -factorial : n -> - case n of - 0 : 1 - 1 : 1 - _ : n * factorial n - 1; - -result : factorial 5; // Returns 120 -``` - -### Input/Output Example - -``` -name : ..in; // Prompts for input -..out "Hello, "; // Outputs greeting -..out name; // Outputs the input +/* Compose */ +f : x -> x + 1; +g : x -> x * 2; +h : compose @f @g; +result : h 5; /* (5 * 2) + 1 = 11 */ ``` -### First-Class Functions Example +## Usage +### Running Scripts +```bash +node lang.js script.txt ``` -double : x -> x * 2; -square : x -> x * x; -compose : f g x -> f g x; -// Function composition -composed : compose @double @square 3; // 18 +### Testing +The project uses a structured testing approach with unit and integration tests: + +#### Unit Tests +Located in `tests/` directory, each focusing on a specific language feature: +- `01_lexer_basic.txt` - Basic lexer functionality ✅ +- `02_arithmetic_operations.txt` - Arithmetic operations ✅ +- `03_comparison_operators.txt` - Comparison operators ✅ +- `04_logical_operators.txt` - Logical operators ✅ +- `05_io_operations.txt` - IO operations ✅ +- `06_function_definitions.txt` - Function definitions ✅ +- `07_case_expressions.txt` - Case expressions and pattern matching 🔄 +- `08_first_class_functions.txt` - First-class function features ✅ +- `09_tables.txt` - Table literals and access ✅ +- `10_standard_library.txt` - Standard library functions ✅ +- `11_edge_cases.txt` - Edge cases 🔄 +- `12_advanced_tables.txt` - Advanced table features 🔄 +- `13_standard_library_complete.txt` - Complete standard library ✅ +- `14_error_handling.txt` - Error handling 🔄 +- `15_multi_parameter_case.txt` - Multi-parameter case expressions 🔄 + +#### Integration Tests +Test combinations of multiple features: +- `integration_01_basic_features.txt` - Basic feature combinations ✅ +- `integration_02_pattern_matching.txt` - Pattern matching with other features 🔄 +- `integration_03_functional_programming.txt` - Functional programming patterns ✅ + +#### Running Tests +```bash +# Run all tests +./run_tests.sh -// Higher-order functions -map : f x -> f x; -mapped : map @double 5; // 10 +# Run individual tests +node lang.js tests/01_lexer_basic.txt +node lang.js tests/integration_01_basic_features.txt +# or with bun +bun run lang.js tests/01_lexer_basic.txt ``` -### Assertion Example +## Implementation Details -``` -x : 5; -y : 3; -sum : x + y; - -..assert x == 5; // Passes -..assert y == 3; // Passes -..assert sum == 8; // Passes -..assert add 3 4 == 7; // Passes (function call) -..assert x == 0; // Fails with error +### Architecture +- **Lexer**: Tokenizes input into tokens (numbers, identifiers, operators, etc.) +- **Parser**: Builds Abstract Syntax Tree (AST) from tokens, translating operators to combinator calls +- **Interpreter**: Executes AST with scope management and combinator function calls + +### Key Components +- **Token Types**: Supports all basic operators, literals, and special tokens +- **AST Nodes**: Expression, statement, and declaration nodes +- **Scope Management**: Lexical scoping with proper variable resolution +- **Combinator Foundation**: All operations implemented as function calls +- **Error Handling**: Comprehensive error reporting for parsing and execution + +## Recent Fixes + +### ✅ Combinator Foundation Implementation (Latest) +- **Issue**: Parser ambiguity between function application and operator expressions +- **Solution**: Implemented comprehensive combinator foundation +- **Status**: ✅ Completed - All operators now translate to combinator function calls +- **Impact**: Eliminated parsing ambiguity while preserving syntax + +### ✅ Standard Library Function Naming Conflicts +- **Issue**: Test functions using names that conflict with standard library combinators +- **Solution**: Renamed test functions to avoid conflicts (e.g., `add` → `add_func`) +- **Status**: ✅ Resolved - All tests now use unique function names + +### ✅ Parser Ambiguity with Unary Minus Arguments +- **Issue**: `filter @isPositive -3` was incorrectly parsed as binary operation +- **Root Cause**: Parser treating `FunctionReference MINUS` as binary minus operation +- **Solution**: Added special case in `parseExpression()` to handle `FunctionReference MINUS` pattern +- **Status**: ✅ Resolved - Standard library functions now work with negative arguments + +### ✅ Unary Minus Operator +- **Issue**: Stack overflow when parsing negative numbers (e.g., `-1`) +- **Root Cause**: Parser lacked specific handling for unary minus operator +- **Solution**: Added `UnaryMinusExpression` parsing and evaluation +- **Status**: ✅ Resolved - All tests passing + +### ✅ IO Operation Parsing +- **Issue**: IO operations not parsed correctly at top level +- **Solution**: Moved IO parsing to proper precedence level +- **Status**: ✅ Resolved + +### ✅ Decimal Number Support +- **Issue**: Decimal numbers not handled correctly +- **Solution**: Updated lexer and interpreter to use `parseFloat()` +- **Status**: ✅ Resolved + +## Known Issues + +### 🔄 Recursive Function Support +- **Issue**: Functions cannot call themselves recursively +- **Example**: `factorial : n -> when n is 0 then 1 _ then n * factorial (n - 1);` fails +- **Root Cause**: Function not available in global scope when body is evaluated +- **Status**: 🔄 In Progress - Implementing forward declaration pattern +- **Impact**: Recursive algorithms cannot be implemented + +### 🔄 When Expression Pattern Parsing +- **Issue**: When expressions only support basic patterns (identifiers, numbers, strings, wildcards) +- **Example**: `when x is < 0 then "negative" _ then "non-negative"` fails +- **Root Cause**: Parser not handling comparison operators in patterns +- **Status**: 🔄 In Progress - Extending pattern parsing +- **Impact**: Limited pattern matching capabilities + +### 🔄 Dot Notation for Table Access +- **Issue**: Table access only supports bracket notation +- **Example**: `table.property` fails to parse +- **Root Cause**: Parser not handling dot notation +- **Status**: 🔄 In Progress - Adding dot notation support +- **Impact**: Less convenient table access syntax + +### 🔄 Multi-parameter Case Expressions +- **Issue**: Multi-parameter case expressions not parsed correctly +- **Example**: `when x y is 0 0 then "both zero" _ _ then "not both zero"` fails +- **Root Cause**: Parser not handling multiple parameters in case expressions +- **Status**: 🔄 In Progress - Extending case expression parsing +- **Impact**: Limited pattern matching with multiple values + +### 🔄 When Expression Parsing Precedence +- **Issue**: When expressions not parsed correctly in all contexts +- **Example**: Some when expressions fail with "Unexpected token in parsePrimary: WHEN" +- **Root Cause**: Parser precedence not handling when expressions properly +- **Status**: 🔄 In Progress - Adjusting parser precedence +- **Impact**: When expressions may fail in certain contexts + +## Development + +### File Structure +``` +. +├── lang.js # Main implementation with combinator foundation +├── parser.js # Parser with operator-to-combinator translation +├── lexer.js # Lexical analyzer +├── tests/ # Unit and integration tests +│ ├── 01_lexer_basic.txt +│ ├── 02_arithmetic_operations.txt +│ ├── ... +│ ├── integration_01_basic_features.txt +│ ├── integration_02_pattern_matching.txt +│ └── integration_03_functional_programming.txt +├── run_tests.sh # Test runner script +├── COMBINATORS.md # Combinator foundation documentation +└── README.md # This file +``` + +### Debugging +Enable debug mode by setting `DEBUG=true`: +```bash +DEBUG=true node lang.js script.txt ``` -## Running Programs +## Combinator Foundation -The language supports two modes of execution: +The language is built on a combinator foundation where all operations are implemented as function calls: -### File Execution Mode -Run a script file by providing the file path as an argument: +### Internal Translation +```javascript +// x - y becomes internally: +subtract(x, y) -```bash -node lang.js script.txt -``` - -### REPL Mode -Start an interactive REPL by running without arguments: - -```bash -node lang.js -``` +// filter @isPositive -3 becomes internally: +filter(isPositive, negate(3)) -In REPL mode: -- Type expressions and end them with a semicolon (`;`) to execute -- Multi-line expressions are supported -- Type `exit` or `quit` to exit -- Variables and functions persist between expressions +// x + y becomes internally: +add(x, y) -**Example REPL session:** -``` -Scripting Language REPL -Type expressions to evaluate. End with semicolon (;) to execute. -Type "exit" to quit. - -> x : 5; -> y : 10; -> + x y; -15 -> exit -Goodbye! +// true and false becomes internally: +logicalAnd(true, false) ``` -## Language Design Principles - -- **Simplicity**: Minimal syntax for maximum clarity -- **Immutability**: Variables cannot be reassigned -- **Functional**: Functions are first-class values with composition support -- **Pattern-oriented**: Pattern matching as a core feature -- **Recursive**: Full support for recursive function calls -- **IO-aware**: Built-in input/output operations with clear impurity markers -- **Educational**: Designed to teach language implementation concepts - -## Limitations - -This is a learning language with intentional limitations: -- Limited arithmetic expression parsing in complex recursive functions -- Function references (`@`) not supported inside case expressions -- No data structures beyond numbers and strings -- No error handling beyond basic validation -- No modules or imports -- No standard library -- IO operations are synchronous and block execution - -## Future Enhancements - -Planned features for future versions: -- Enhanced arithmetic expression parsing for complex recursive functions -- Function references (`@`) support inside case expressions -- Lists and data structures -- Error handling -- Standard library functions -- Modules and imports -- Type system -- Performance optimizations - -## Implementation Details +### Benefits +- **Eliminates Parsing Ambiguity**: Every operation is a function call +- **Preserves Syntax**: Zero breaking changes to existing code +- **Functional Foundation**: Everything is a function under the hood +- **Extensible**: Easy to add new combinators and patterns +- **Consistent Semantics**: All operations follow the same pattern -The language is implemented in JavaScript with three main components: +For detailed information about the combinator foundation, see [COMBINATORS.md](COMBINATORS.md). -1. **Lexer** (`lexer()`): Converts source code to tokens -2. **Parser** (`parser()`): Builds AST from tokens -3. **Interpreter** (`interpreter()`): Executes AST +## Contributing -Each component is designed to be modular and extensible for adding new language features. \ No newline at end of file +1. Create focused unit tests for new features +2. Add integration tests for feature combinations +3. Update documentation +4. Run the full test suite before submitting changes +5. Follow the combinator foundation approach for new operations \ No newline at end of file diff --git a/js/scripting-lang/comprehensive_test.txt b/js/scripting-lang/comprehensive_test.txt deleted file mode 100644 index 3ff5305..0000000 --- a/js/scripting-lang/comprehensive_test.txt +++ /dev/null @@ -1,128 +0,0 @@ -x : 5; -y : 3; -name : "Alice"; -age : 25; - -..out "Basic arithmetic:"; -sum : x + y; -diff : x - y; -product : x * y; -quotient : x / y; -..out sum; -..out diff; -..out product; -..out quotient; - -..out "Variables:"; -..out name; -..out age; - -add : x y -> x + y; -double : x -> x * 2; -square : x -> x * x; - -..out "Functions:"; -result1 : add 3 4; -result2 : double 5; -result3 : square 4; -..out result1; -..out result2; -..out result3; - -compare : x y -> - case x y of - 0 0 : "both zero" - 0 _ : "x is zero" - _ 0 : "y is zero" - _ _ : "neither zero"; - -grade : score -> - case score of - 95 : "A" - 85 : "B" - 75 : "C" - 65 : "D" - _ : "F"; - -..out "Pattern matching:"; -test1 : compare 0 0; -test2 : compare 0 5; -test3 : compare 5 0; -test4 : compare 5 5; -..out test1; -..out test2; -..out test3; -..out test4; - -grade1 : grade 95; -grade2 : grade 85; -grade3 : grade 75; -grade4 : grade 65; -grade5 : grade 55; -..out grade1; -..out grade2; -..out grade3; -..out grade4; -..out grade5; - -countdown : n -> - case n of - 0 : 0 - _ : countdown n - 1; - -factorial : n -> - case n of - 0 : 1 - 1 : 1 - _ : n * factorial n - 1; - -..out "Recursion:"; -count : countdown 3; -fact : factorial 5; -..out count; -..out fact; - -..out "Input/Output demo:"; -..out "Hello, World!"; -..out 42; -..out "The sum of x and y is:"; -..out sum; - -complex : add double 3 square 2; -..out "Complex expression:"; -..out complex; - -..out "Testing assertions:"; -..assert x == 5; -..assert y == 3; -..assert sum == 8; -..assert "hello" == "hello"; -..assert add 3 4 == 7; - -..out "Testing first-class functions:"; -compose : f g x -> f g x; -apply : f x -> f x; - -composed : compose @double @square 3; -applied : apply @double 5; - -..assert composed == 18; -..assert applied == 10; - -..out "First-class functions:"; -..out composed; -..out applied; - -..out "Testing higher-order functions:"; -map : f x -> f x; -mapped1 : map @double 3; -mapped2 : map @square 4; - -..assert mapped1 == 6; -..assert mapped2 == 16; - -..out "Map results:"; -..out mapped1; -..out mapped2; - -..out "All tests completed successfully!"; \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.eot b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000..5d20d91 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.eot Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.svg b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 0000000..3ed7be4 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="open_sansbold" horiz-adv-x="1169" > +<font-face units-per-em="2048" ascent="1638" descent="-410" /> +<missing-glyph horiz-adv-x="532" /> +<glyph unicode="fi" horiz-adv-x="1417" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM940 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM1258 0h-305v1118 h305v-1118z" /> +<glyph unicode="fl" horiz-adv-x="1417" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1258 0h-305v1556h305v-1556z" /> +<glyph unicode="ffi" horiz-adv-x="2208" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1571 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224 q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1730 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM2048 0h-305v1118h305v-1118z" /> +<glyph unicode="ffl" horiz-adv-x="2208" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1571 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224 q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM2048 0h-305v1556h305v-1556z" /> +<glyph horiz-adv-x="2048" /> +<glyph horiz-adv-x="2048" /> +<glyph unicode="
" horiz-adv-x="1044" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="	" horiz-adv-x="532" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="!" horiz-adv-x="586" d="M416 485h-244l-51 977h346zM117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" /> +<glyph unicode=""" horiz-adv-x="967" d="M412 1462l-41 -528h-197l-41 528h279zM834 1462l-41 -528h-197l-41 528h279z" /> +<glyph unicode="#" horiz-adv-x="1323" d="M999 844l-47 -232h258v-206h-297l-77 -406h-220l78 406h-194l-76 -406h-215l74 406h-238v206h277l47 232h-252v209h289l77 407h219l-77 -407h198l78 407h215l-78 -407h240v-209h-279zM539 612h196l47 232h-196z" /> +<glyph unicode="$" d="M1092 457q0 -159 -115 -255.5t-322 -115.5v-205h-137v201q-244 5 -428 86v264q87 -43 209.5 -76t218.5 -39v310l-67 26q-198 78 -280.5 169.5t-82.5 226.5q0 145 113.5 238.5t316.5 113.5v153h137v-149q229 -10 414 -92l-94 -234q-156 64 -320 78v-295 q195 -75 277.5 -130t121 -121t38.5 -154zM791 442q0 42 -34 71t-102 60v-249q136 23 136 118zM389 1049q0 -44 30.5 -72.5t98.5 -58.5v235q-129 -19 -129 -104z" /> +<glyph unicode="%" horiz-adv-x="1845" d="M315 1024q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 -72.5 -61.5t-22.5 -188.5zM758 1026q0 -230 -89 -345.5t-261 -115.5q-165 0 -255 118.5t-90 342.5q0 457 345 457q169 0 259.5 -118.5t90.5 -338.5zM1446 1462l-811 -1462h-240l811 1462h240z M1339 440q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 -72.5 -61.5t-22.5 -188.5zM1782 442q0 -229 -89 -344.5t-261 -115.5q-165 0 -255 118.5t-90 341.5q0 457 345 457q169 0 259.5 -118.5t90.5 -338.5z" /> +<glyph unicode="&" horiz-adv-x="1536" d="M1536 0h-377l-115 113q-191 -133 -432 -133q-244 0 -387 112t-143 303q0 137 60.5 233.5t207.5 180.5q-75 86 -109 164.5t-34 171.5q0 152 116.5 245t311.5 93q186 0 297.5 -86.5t111.5 -231.5q0 -119 -69 -217.5t-223 -187.5l284 -277q71 117 123 301h318 q-36 -135 -99 -263.5t-143 -227.5zM403 424q0 -86 64.5 -137t165.5 -51q126 0 227 61l-332 330q-58 -44 -91.5 -92t-33.5 -111zM762 1133q0 53 -36 83.5t-93 30.5q-67 0 -105.5 -32t-38.5 -91q0 -88 95 -194q86 48 132 94.5t46 108.5z" /> +<glyph unicode="'" horiz-adv-x="545" d="M412 1462l-41 -528h-197l-41 528h279z" /> +<glyph unicode="(" horiz-adv-x="694" d="M82 561q0 265 77.5 496t223.5 405h250q-141 -193 -213 -424t-72 -475q0 -245 73.5 -473.5t209.5 -413.5h-248q-147 170 -224 397t-77 488z" /> +<glyph unicode=")" horiz-adv-x="694" d="M612 561q0 -263 -77.5 -490t-223.5 -395h-248q135 184 209 412.5t74 474.5q0 244 -72 475t-213 424h250q147 -175 224 -406.5t77 -494.5z" /> +<glyph unicode="*" horiz-adv-x="1116" d="M688 1556l-41 -368l373 104l33 -252l-340 -24l223 -297l-227 -121l-156 313l-137 -311l-236 119l221 297l-338 26l39 250l365 -104l-41 368h262z" /> +<glyph unicode="+" d="M475 612h-387v219h387v390h219v-390h387v-219h-387v-385h-219v385z" /> +<glyph unicode="," horiz-adv-x="594" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280z" /> +<glyph unicode="-" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" /> +<glyph unicode="." horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" /> +<glyph unicode="/" horiz-adv-x="846" d="M836 1462l-545 -1462h-277l545 1462h277z" /> +<glyph unicode="0" d="M1096 731q0 -383 -125.5 -567t-386.5 -184q-253 0 -381.5 190t-128.5 561q0 387 125 570.5t385 183.5q253 0 382.5 -192t129.5 -562zM381 731q0 -269 46.5 -385.5t156.5 -116.5q108 0 156 118t48 384q0 269 -48.5 386.5t-155.5 117.5q-109 0 -156 -117.5t-47 -386.5z" /> +<glyph unicode="1" d="M846 0h-309v846l3 139l5 152q-77 -77 -107 -101l-168 -135l-149 186l471 375h254v-1462z" /> +<glyph unicode="2" d="M1104 0h-1022v215l367 371q163 167 213 231.5t72 119.5t22 114q0 88 -48.5 131t-129.5 43q-85 0 -165 -39t-167 -111l-168 199q108 92 179 130t155 58.5t188 20.5q137 0 242 -50t163 -140t58 -206q0 -101 -35.5 -189.5t-110 -181.5t-262.5 -265l-188 -177v-14h637v-260z " /> +<glyph unicode="3" d="M1047 1135q0 -137 -83 -233t-233 -132v-6q177 -22 268 -107.5t91 -230.5q0 -211 -153 -328.5t-437 -117.5q-238 0 -422 79v263q85 -43 187 -70t202 -27q153 0 226 52t73 167q0 103 -84 146t-268 43h-111v237h113q170 0 248.5 44.5t78.5 152.5q0 166 -208 166 q-72 0 -146.5 -24t-165.5 -83l-143 213q200 144 477 144q227 0 358.5 -92t131.5 -256z" /> +<glyph unicode="4" d="M1137 303h-176v-303h-302v303h-624v215l641 944h285v-919h176v-240zM659 543v248q0 62 5 180t8 137h-8q-37 -82 -89 -160l-268 -405h352z" /> +<glyph unicode="5" d="M614 934q212 0 337.5 -119t125.5 -326q0 -245 -151 -377t-432 -132q-244 0 -394 79v267q79 -42 184 -68.5t199 -26.5q283 0 283 232q0 221 -293 221q-53 0 -117 -10.5t-104 -22.5l-123 66l55 745h793v-262h-522l-27 -287l35 7q61 14 151 14z" /> +<glyph unicode="6" d="M72 621q0 434 183.5 646t549.5 212q125 0 196 -15v-247q-89 20 -176 20q-159 0 -259.5 -48t-150.5 -142t-59 -267h13q99 170 317 170q196 0 307 -123t111 -340q0 -234 -132 -370.5t-366 -136.5q-162 0 -282.5 75t-186 219t-65.5 347zM600 227q99 0 152 66.5t53 189.5 q0 107 -49.5 168.5t-149.5 61.5q-94 0 -160.5 -61t-66.5 -142q0 -119 62.5 -201t158.5 -82z" /> +<glyph unicode="7" d="M227 0l549 1200h-721v260h1049v-194l-553 -1266h-324z" /> +<glyph unicode="8" d="M586 1481q210 0 338.5 -95.5t128.5 -257.5q0 -112 -62 -199.5t-200 -156.5q164 -88 235.5 -183.5t71.5 -209.5q0 -180 -141 -289.5t-371 -109.5q-240 0 -377 102t-137 289q0 125 66.5 222t213.5 171q-125 79 -180 169t-55 197q0 157 130 254t339 97zM358 389 q0 -86 60 -134t164 -48q115 0 172 49.5t57 130.5q0 67 -56.5 125.5t-183.5 124.5q-213 -98 -213 -248zM584 1255q-79 0 -127.5 -40.5t-48.5 -108.5q0 -60 38.5 -107.5t139.5 -97.5q98 46 137 94t39 111q0 69 -50 109t-128 40z" /> +<glyph unicode="9" d="M1098 838q0 -432 -182 -645t-551 -213q-130 0 -197 14v248q84 -21 176 -21q155 0 255 45.5t153 143t61 268.5h-12q-58 -94 -134 -132t-190 -38q-191 0 -301 122.5t-110 340.5q0 235 133.5 371.5t363.5 136.5q162 0 283.5 -76t186.5 -220.5t65 -344.5zM569 1231 q-96 0 -150 -66t-54 -190q0 -106 49 -168t149 -62q94 0 161 61.5t67 141.5q0 119 -62.5 201t-159.5 82z" /> +<glyph unicode=":" horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" /> +<glyph unicode=";" horiz-adv-x="594" d="M444 238l15 -23q-52 -202 -176 -479h-220q65 266 101 502h280zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" /> +<glyph unicode="<" d="M1081 203l-993 438v143l993 496v-240l-684 -317l684 -281v-239z" /> +<glyph unicode="=" d="M88 805v219h993v-219h-993zM88 418v219h993v-219h-993z" /> +<glyph unicode=">" d="M88 442l684 281l-684 317v240l993 -496v-143l-993 -438v239z" /> +<glyph unicode="?" horiz-adv-x="977" d="M276 485v74q0 96 41 167t150 151q105 75 138.5 122t33.5 105q0 65 -48 99t-134 34q-150 0 -342 -98l-109 219q223 125 473 125q206 0 327.5 -99t121.5 -264q0 -110 -50 -190t-190 -180q-96 -71 -121.5 -108t-25.5 -97v-60h-265zM244 143q0 84 45 127t131 43 q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" /> +<glyph unicode="@" horiz-adv-x="1837" d="M1735 752q0 -144 -46 -263.5t-130 -187.5t-195 -68q-74 0 -131 35.5t-82 93.5h-16q-108 -129 -275 -129q-177 0 -279 106.5t-102 291.5q0 211 134 340t350 129q86 0 189.5 -16.5t170.5 -39.5l-23 -489q0 -139 76 -139q64 0 102 93.5t38 244.5q0 161 -67 284.5 t-188.5 188.5t-277.5 65q-202 0 -351 -83t-228.5 -239.5t-79.5 -361.5q0 -276 147.5 -423.5t427.5 -147.5q106 0 233 23.5t250 68.5v-192q-214 -91 -475 -91q-380 0 -592.5 200t-212.5 556q0 247 108.5 448.5t309 316t461.5 114.5q220 0 393 -90t267 -256t94 -383zM711 627 q0 -211 172 -211q90 0 137 63.5t57 206.5l13 221q-51 11 -115 11q-125 0 -194.5 -78t-69.5 -213z" /> +<glyph unicode="A" horiz-adv-x="1413" d="M1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381z" /> +<glyph unicode="B" horiz-adv-x="1376" d="M184 1462h455q311 0 451.5 -88.5t140.5 -281.5q0 -131 -61.5 -215t-163.5 -101v-10q139 -31 200.5 -116t61.5 -226q0 -200 -144.5 -312t-392.5 -112h-547v1462zM494 883h180q126 0 182.5 39t56.5 129q0 84 -61.5 120.5t-194.5 36.5h-163v-325zM494 637v-381h202 q128 0 189 49t61 150q0 182 -260 182h-192z" /> +<glyph unicode="C" horiz-adv-x="1305" d="M805 1225q-175 0 -271 -131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 -488 193.5t-169 555.5q0 228 83 399.5t238.5 263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29z" /> +<glyph unicode="D" horiz-adv-x="1516" d="M1397 745q0 -361 -205.5 -553t-593.5 -192h-414v1462h459q358 0 556 -189t198 -528zM1075 737q0 471 -416 471h-165v-952h133q448 0 448 481z" /> +<glyph unicode="E" horiz-adv-x="1147" d="M1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256z" /> +<glyph unicode="F" horiz-adv-x="1124" d="M489 0h-305v1462h838v-254h-533v-377h496v-253h-496v-578z" /> +<glyph unicode="G" horiz-adv-x="1483" d="M739 821h580v-758q-141 -46 -265.5 -64.5t-254.5 -18.5q-331 0 -505.5 194.5t-174.5 558.5q0 354 202.5 552t561.5 198q225 0 434 -90l-103 -248q-160 80 -333 80q-201 0 -322 -135t-121 -363q0 -238 97.5 -363.5t283.5 -125.5q97 0 197 20v305h-277v258z" /> +<glyph unicode="H" horiz-adv-x="1567" d="M1382 0h-309v631h-579v-631h-310v1462h310v-573h579v573h309v-1462z" /> +<glyph unicode="I" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310z" /> +<glyph unicode="J" horiz-adv-x="678" d="M31 -430q-105 0 -183 22v258q80 -20 146 -20q102 0 146 63.5t44 198.5v1370h310v-1368q0 -256 -117 -390t-346 -134z" /> +<glyph unicode="K" horiz-adv-x="1360" d="M1360 0h-352l-383 616l-131 -94v-522h-310v1462h310v-669l122 172l396 497h344l-510 -647z" /> +<glyph unicode="L" horiz-adv-x="1157" d="M184 0v1462h310v-1206h593v-256h-903z" /> +<glyph unicode="M" horiz-adv-x="1931" d="M803 0l-352 1147h-9q19 -350 19 -467v-680h-277v1462h422l346 -1118h6l367 1118h422v-1462h-289v692q0 49 1.5 113t13.5 340h-9l-377 -1145h-284z" /> +<glyph unicode="N" horiz-adv-x="1665" d="M1481 0h-394l-636 1106h-9q19 -293 19 -418v-688h-277v1462h391l635 -1095h7q-15 285 -15 403v692h279v-1462z" /> +<glyph unicode="O" horiz-adv-x="1630" d="M1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" /> +<glyph unicode="P" horiz-adv-x="1286" d="M494 774h102q143 0 214 56.5t71 164.5q0 109 -59.5 161t-186.5 52h-141v-434zM1194 1006q0 -236 -147.5 -361t-419.5 -125h-133v-520h-310v1462h467q266 0 404.5 -114.5t138.5 -341.5z" /> +<glyph unicode="Q" horiz-adv-x="1630" d="M1511 733q0 -258 -91.5 -432.5t-268.5 -255.5l352 -393h-397l-268 328h-23q-336 0 -516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" /> +<glyph unicode="R" horiz-adv-x="1352" d="M494 813h100q147 0 217 49t70 154q0 104 -71.5 148t-221.5 44h-94v-395zM494 561v-561h-310v1462h426q298 0 441 -108.5t143 -329.5q0 -129 -71 -229.5t-201 -157.5q330 -493 430 -637h-344l-349 561h-165z" /> +<glyph unicode="S" horiz-adv-x="1128" d="M1047 406q0 -198 -142.5 -312t-396.5 -114q-234 0 -414 88v288q148 -66 250.5 -93t187.5 -27q102 0 156.5 39t54.5 116q0 43 -24 76.5t-70.5 64.5t-189.5 99q-134 63 -201 121t-107 135t-40 180q0 194 131.5 305t363.5 111q114 0 217.5 -27t216.5 -76l-100 -241 q-117 48 -193.5 67t-150.5 19q-88 0 -135 -41t-47 -107q0 -41 19 -71.5t60.5 -59t196.5 -102.5q205 -98 281 -196.5t76 -241.5z" /> +<glyph unicode="T" horiz-adv-x="1186" d="M748 0h-310v1204h-397v258h1104v-258h-397v-1204z" /> +<glyph unicode="U" horiz-adv-x="1548" d="M1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309z" /> +<glyph unicode="V" horiz-adv-x="1331" d="M1018 1462h313l-497 -1462h-338l-496 1462h313l275 -870q23 -77 47.5 -179.5t30.5 -142.5q11 92 75 322z" /> +<glyph unicode="W" horiz-adv-x="1980" d="M1608 0h-353l-198 768q-11 41 -37.5 169.5t-30.5 172.5q-6 -54 -30 -173.5t-37 -170.5l-197 -766h-352l-373 1462h305l187 -798q49 -221 71 -383q6 57 27.5 176.5t40.5 185.5l213 819h293l213 -819q14 -55 35 -168t32 -194q10 78 32 194.5t40 188.5l186 798h305z" /> +<glyph unicode="X" horiz-adv-x="1366" d="M1366 0h-354l-340 553l-340 -553h-332l485 754l-454 708h342l315 -526l309 526h334l-459 -725z" /> +<glyph unicode="Y" horiz-adv-x="1278" d="M639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336z" /> +<glyph unicode="Z" horiz-adv-x="1186" d="M1137 0h-1088v201l701 1005h-682v256h1050v-200l-700 -1006h719v-256z" /> +<glyph unicode="[" horiz-adv-x="678" d="M627 -324h-484v1786h484v-211h-224v-1364h224v-211z" /> +<glyph unicode="\" horiz-adv-x="846" d="M289 1462l545 -1462h-277l-545 1462h277z" /> +<glyph unicode="]" horiz-adv-x="678" d="M51 -113h223v1364h-223v211h484v-1786h-484v211z" /> +<glyph unicode="^" horiz-adv-x="1090" d="M8 520l438 950h144l495 -950h-239l-322 643l-280 -643h-236z" /> +<glyph unicode="_" horiz-adv-x="842" d="M846 -324h-850v140h850v-140z" /> +<glyph unicode="`" horiz-adv-x="1243" d="M707 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="a" horiz-adv-x="1237" d="M870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48t-65 -134 q0 -129 148 -129q106 0 169.5 61t63.5 162v92z" /> +<glyph unicode="b" horiz-adv-x="1296" d="M782 1139q198 0 310 -154.5t112 -423.5q0 -277 -115.5 -429t-314.5 -152q-197 0 -309 143h-21l-51 -123h-233v1556h305v-362q0 -69 -12 -221h12q107 166 317 166zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q94 0 149.5 86.5t55.5 251.5 t-56 247.5t-153 82.5z" /> +<glyph unicode="c" horiz-adv-x="1053" d="M614 -20q-522 0 -522 573q0 285 142 435.5t407 150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18z" /> +<glyph unicode="d" horiz-adv-x="1296" d="M514 -20q-197 0 -309.5 153t-112.5 424q0 275 114.5 428.5t315.5 153.5q211 0 322 -164h10q-23 125 -23 223v358h306v-1556h-234l-59 145h-13q-104 -165 -317 -165zM621 223q117 0 171.5 68t59.5 231v33q0 180 -55.5 258t-180.5 78q-102 0 -158.5 -86.5t-56.5 -251.5 t57 -247.5t163 -82.5z" /> +<glyph unicode="e" horiz-adv-x="1210" d="M623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z" /> +<glyph unicode="f" horiz-adv-x="793" d="M778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229z" /> +<glyph unicode="g" horiz-adv-x="1157" d="M1133 1118v-155l-175 -45q48 -75 48 -168q0 -180 -125.5 -280.5t-348.5 -100.5l-55 3l-45 5q-47 -36 -47 -80q0 -66 168 -66h190q184 0 280.5 -79t96.5 -232q0 -196 -163.5 -304t-469.5 -108q-234 0 -357.5 81.5t-123.5 228.5q0 101 63 169t185 97q-47 20 -82 65.5 t-35 96.5q0 64 37 106.5t107 83.5q-88 38 -139.5 122t-51.5 198q0 183 119 283t340 100q47 0 111.5 -8.5t82.5 -12.5h390zM270 -158q0 -63 60.5 -99t169.5 -36q164 0 257 45t93 123q0 63 -55 87t-170 24h-158q-84 0 -140.5 -39.5t-56.5 -104.5zM381 752q0 -91 41.5 -144 t126.5 -53q86 0 126 53t40 144q0 202 -166 202q-168 0 -168 -202z" /> +<glyph unicode="h" horiz-adv-x="1346" d="M1192 0h-305v653q0 242 -180 242q-128 0 -185 -87t-57 -282v-526h-305v1556h305v-317q0 -37 -7 -174l-7 -90h16q102 164 324 164q197 0 299 -106t102 -304v-729z" /> +<glyph unicode="i" horiz-adv-x="625" d="M147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM465 0h-305v1118h305v-1118z" /> +<glyph unicode="j" horiz-adv-x="625" d="M70 -492q-117 0 -201 25v240q70 -19 143 -19q77 0 112.5 43t35.5 127v1194h305v-1239q0 -178 -103 -274.5t-292 -96.5zM147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150z" /> +<glyph unicode="k" horiz-adv-x="1270" d="M453 608l133 170l313 340h344l-444 -485l471 -633h-352l-322 453l-131 -105v-348h-305v1556h305v-694l-16 -254h4z" /> +<glyph unicode="l" horiz-adv-x="625" d="M465 0h-305v1556h305v-1556z" /> +<glyph unicode="m" horiz-adv-x="2011" d="M1161 0h-305v653q0 121 -40.5 181.5t-127.5 60.5q-117 0 -170 -86t-53 -283v-526h-305v1118h233l41 -143h17q45 77 130 120.5t195 43.5q251 0 340 -164h27q45 78 132.5 121t197.5 43q190 0 287.5 -97.5t97.5 -312.5v-729h-306v653q0 121 -40.5 181.5t-127.5 60.5 q-112 0 -167.5 -80t-55.5 -254v-561z" /> +<glyph unicode="n" horiz-adv-x="1346" d="M1192 0h-305v653q0 121 -43 181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305v1118h233l41 -143h17q51 81 140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729z" /> +<glyph unicode="o" horiz-adv-x="1268" d="M403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z" /> +<glyph unicode="p" horiz-adv-x="1296" d="M774 -20q-197 0 -309 143h-16q16 -140 16 -162v-453h-305v1610h248l43 -145h14q107 166 317 166q198 0 310 -153t112 -425q0 -179 -52.5 -311t-149.5 -201t-228 -69zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q205 0 205 338 q0 165 -50.5 247.5t-158.5 82.5z" /> +<glyph unicode="q" horiz-adv-x="1296" d="M623 219q116 0 170 66.5t59 232.5v37q0 180 -55.5 258t-178.5 78q-215 0 -215 -338q0 -168 53.5 -251t166.5 -83zM514 -20q-198 0 -310 152.5t-112 424.5q0 274 114.5 428t313.5 154q106 0 185 -40t139 -124h8l27 143h258v-1610h-306v469q0 61 13 168h-13 q-49 -81 -130 -123t-187 -42z" /> +<glyph unicode="r" horiz-adv-x="930" d="M784 1139q62 0 103 -9l-23 -286q-37 10 -90 10q-146 0 -227.5 -75t-81.5 -210v-569h-305v1118h231l45 -188h15q52 94 140.5 151.5t192.5 57.5z" /> +<glyph unicode="s" horiz-adv-x="1018" d="M940 332q0 -172 -119.5 -262t-357.5 -90q-122 0 -208 16.5t-161 48.5v252q85 -40 191.5 -67t187.5 -27q166 0 166 96q0 36 -22 58.5t-76 51t-144 66.5q-129 54 -189.5 100t-88 105.5t-27.5 146.5q0 149 115.5 230.5t327.5 81.5q202 0 393 -88l-92 -220q-84 36 -157 59 t-149 23q-135 0 -135 -73q0 -41 43.5 -71t190.5 -89q131 -53 192 -99t90 -106t29 -143z" /> +<glyph unicode="t" horiz-adv-x="889" d="M631 223q80 0 192 35v-227q-114 -51 -280 -51q-183 0 -266.5 92.5t-83.5 277.5v539h-146v129l168 102l88 236h195v-238h313v-229h-313v-539q0 -65 36.5 -96t96.5 -31z" /> +<glyph unicode="u" horiz-adv-x="1346" d="M952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234z" /> +<glyph unicode="v" horiz-adv-x="1165" d="M426 0l-426 1118h319l216 -637q36 -121 45 -229h6q5 96 45 229l215 637h319l-426 -1118h-313z" /> +<glyph unicode="w" horiz-adv-x="1753" d="M1079 0l-86 391l-116 494h-7l-204 -885h-328l-318 1118h304l129 -495q31 -133 63 -367h6q4 76 35 241l16 85l138 536h336l131 -536q4 -22 12.5 -65t16.5 -91.5t14.5 -95t7.5 -74.5h6q9 72 32 197.5t33 169.5l134 495h299l-322 -1118h-332z" /> +<glyph unicode="x" horiz-adv-x="1184" d="M389 571l-360 547h346l217 -356l219 356h346l-364 -547l381 -571h-347l-235 383l-236 -383h-346z" /> +<glyph unicode="y" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55z" /> +<glyph unicode="z" horiz-adv-x="999" d="M938 0h-883v180l518 705h-487v233h834v-198l-504 -687h522v-233z" /> +<glyph unicode="{" horiz-adv-x="807" d="M287 270q0 87 -65.5 133t-190.5 46v239q126 0 191 44t65 126v8v318q0 153 97 215.5t341 62.5v-225q-99 -3 -136.5 -38t-37.5 -103v-299q-6 -188 -234 -222v-12q234 -35 234 -212v-9v-299q0 -68 37 -103t137 -38v-226q-244 0 -341 62.5t-97 216.5v315z" /> +<glyph unicode="|" horiz-adv-x="1128" d="M455 1550h219v-2015h-219v2015z" /> +<glyph unicode="}" horiz-adv-x="807" d="M520 -45q0 -112 -41 -169t-135.5 -83.5t-261.5 -26.5v226q99 2 136.5 36t37.5 105v299v11q0 86 59 139.5t174 70.5v12q-227 34 -233 222v299q0 70 -37 104t-137 37v225q167 0 262 -26.5t135.5 -84t40.5 -167.5v-318v-10q0 -84 61.5 -126t194.5 -42v-239 q-125 0 -190.5 -41t-65.5 -138v-315z" /> +<glyph unicode="~" d="M322 672q-55 0 -117.5 -33.5t-116.5 -87.5v231q103 109 256 109q73 0 137.5 -16t139.5 -48q129 -55 227 -55q53 0 116 32t117 89v-231q-101 -109 -256 -109q-66 0 -126 13t-150 50q-131 56 -227 56z" /> +<glyph unicode="¡" horiz-adv-x="586" d="M168 606h244l51 -975h-346zM467 948q0 -84 -45 -127t-131 -43q-83 0 -128.5 44t-45.5 126q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126z" /> +<glyph unicode="¢" d="M563 176q-420 59 -420 565q0 261 104.5 403t315.5 173v166h178v-158q166 -9 299 -74l-90 -235q-72 29 -134 47t-124 18q-121 0 -179 -83.5t-58 -254.5q0 -327 237 -327q82 0 148 15.5t166 60.5v-254q-127 -61 -265 -70v-188h-178v196z" /> +<glyph unicode="£" d="M700 1483q195 0 390 -82l-93 -230q-157 64 -272 64q-78 0 -120 -44.5t-42 -127.5v-193h375v-219h-375v-143q0 -170 -151 -248h718v-260h-1048v248q103 44 141.5 101t38.5 157v145h-178v219h178v195q0 201 114.5 309.5t323.5 108.5z" /> +<glyph unicode="¤" d="M188 723q0 102 54 197l-129 127l147 147l127 -127q91 53 197 53q105 0 196 -55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 -145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 -54 197zM395 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" /> +<glyph unicode="¥" d="M584 860l264 602h313l-383 -747h195v-178h-246v-138h246v-178h-246v-221h-287v221h-247v178h247v138h-247v178h190l-377 747h316z" /> +<glyph unicode="¦" horiz-adv-x="1128" d="M455 1550h219v-815h-219v815zM455 350h219v-815h-219v815z" /> +<glyph unicode="§" horiz-adv-x="995" d="M121 805q0 79 36 144.5t97 105.5q-133 84 -133 233q0 131 111.5 210t293.5 79q170 0 363 -84l-82 -190q-68 32 -138.5 57.5t-148.5 25.5q-81 0 -118 -23t-37 -71q0 -49 49.5 -86t163.5 -82q163 -64 240 -148.5t77 -193.5q0 -177 -125 -260q62 -40 93.5 -92.5t31.5 -126.5 q0 -148 -119.5 -235.5t-320.5 -87.5q-203 0 -349 79v207q81 -41 180 -69.5t169 -28.5q194 0 194 117q0 39 -18.5 63t-63.5 49.5t-125 59.5q-183 74 -252 152.5t-69 195.5zM344 827q0 -67 65 -119t181 -98q78 57 78 146q0 68 -50.5 115t-183.5 96q-37 -14 -63.5 -53.5 t-26.5 -86.5z" /> +<glyph unicode="¨" horiz-adv-x="1243" d="M279 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM682 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="©" horiz-adv-x="1704" d="M895 1010q-97 0 -150 -74t-53 -205q0 -280 203 -280q57 0 123 15t123 44v-191q-120 -57 -252 -57q-204 0 -316 125t-112 346q0 220 110.5 342.5t309.5 122.5q149 0 305 -78l-74 -168q-113 58 -217 58zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 -223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223t-304 81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304z" /> +<glyph unicode="ª" horiz-adv-x="784" d="M561 764l-31 110q-43 -58 -105 -90t-136 -32q-117 0 -179.5 58.5t-62.5 164.5q0 109 82.5 163.5t267.5 63.5l99 4q0 117 -127 117q-81 0 -217 -61l-66 135q66 32 145.5 57t178.5 25q137 0 211.5 -71t74.5 -202v-442h-135zM252 977q0 -38 23 -56t55 -18q77 0 121.5 41.5 t44.5 106.5v36l-99 -6q-145 -10 -145 -104z" /> +<glyph unicode="«" horiz-adv-x="1260" d="M82 573l371 455l219 -119l-279 -348l279 -348l-219 -119l-371 453v26zM588 573l370 455l220 -119l-279 -348l279 -348l-220 -119l-370 453v26z" /> +<glyph unicode="¬" d="M1081 248h-219v364h-774v219h993v-583z" /> +<glyph unicode="­" horiz-adv-x="659" d="M61 424zM61 424v250h537v-250h-537z" /> +<glyph unicode="®" horiz-adv-x="1704" d="M1157 905q0 -170 -143 -233l237 -400h-254l-178 338h-47v-338h-229v916h264q181 0 265.5 -70t84.5 -213zM772 778h31q66 0 94.5 28.5t28.5 94.5q0 65 -28 92t-97 27h-29v-242zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370 t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 -223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223t-304 81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304z" /> +<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v201h1036v-201z" /> +<glyph unicode="°" horiz-adv-x="877" d="M92 1137q0 92 46 172t126 127t174 47q92 0 172.5 -46t127 -127t46.5 -173q0 -93 -46.5 -173.5t-126.5 -125.5t-173 -45q-145 0 -245.5 99.5t-100.5 244.5zM283 1137q0 -64 44.5 -109t110.5 -45t111 46t45 108q0 63 -45.5 110t-110.5 47q-64 0 -109.5 -46t-45.5 -111z" /> +<glyph unicode="±" d="M475 674h-387v219h387v389h219v-389h387v-219h-387v-385h-219v385zM88 0v219h993v-219h-993z" /> +<glyph unicode="²" horiz-adv-x="776" d="M702 586h-647v168l224 219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88l-123 152q147 129 336 129q137 0 216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200z" /> +<glyph unicode="³" horiz-adv-x="776" d="M666 1249q0 -143 -170 -198v-13q94 -20 146 -75t52 -134q0 -121 -88 -190.5t-274 -69.5q-143 0 -273 70v190q148 -90 271 -90q143 0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 63t-76 25q-47 0 -89 -19t-99 -59l-101 141 q62 47 137.5 78t178.5 31q127 0 208 -64t81 -168z" /> +<glyph unicode="´" horiz-adv-x="1243" d="M332 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="µ" horiz-adv-x="1352" d="M465 465q0 -121 44 -181.5t138 -60.5q126 0 183 86.5t57 282.5v526h305v-1118h-231l-43 150h-15q-42 -85 -102 -127.5t-148 -42.5q-62 0 -114 23t-84 67l5 -85l5 -157v-320h-305v1610h305v-653z" /> +<glyph unicode="¶" horiz-adv-x="1341" d="M1167 -260h-161v1616h-166v-1616h-162v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h604v-1816z" /> +<glyph unicode="·" horiz-adv-x="584" d="M117 723q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" /> +<glyph unicode="¸" horiz-adv-x="420" d="M418 -250q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" /> +<glyph unicode="¹" horiz-adv-x="776" d="M584 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876z" /> +<glyph unicode="º" horiz-adv-x="795" d="M737 1116q0 -171 -91.5 -267.5t-250.5 -96.5q-153 0 -245.5 98.5t-92.5 265.5q0 169 89.5 266t252.5 97q152 0 245 -98.5t93 -264.5zM260 1116q0 -100 32.5 -150.5t104.5 -50.5t103.5 50.5t31.5 150.5t-31.5 149.5t-103.5 49.5t-104.5 -49.5t-32.5 -149.5z" /> +<glyph unicode="»" horiz-adv-x="1260" d="M1178 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26zM672 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26z" /> +<glyph unicode="¼" horiz-adv-x="1804" d="M46 0zM538 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876zM1370 1462l-811 -1462h-239l811 1462h239zM1682 152h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM1319 320v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191 h198z" /> +<glyph unicode="½" horiz-adv-x="1804" d="M46 0zM538 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876zM1370 1462l-811 -1462h-239l811 1462h239zM1716 1h-647v168l224 219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88l-123 152q147 129 336 129 q137 0 216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200z" /> +<glyph unicode="¾" horiz-adv-x="1804" d="M90 0zM697 1249q0 -143 -170 -198v-13q94 -20 146 -75t52 -134q0 -121 -88 -190.5t-274 -69.5q-143 0 -273 70v190q148 -90 271 -90q143 0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 63t-76 25q-47 0 -89 -19t-99 -59l-101 141 q62 47 137.5 78t178.5 31q127 0 208 -64t81 -168zM1441 1462l-811 -1462h-239l811 1462h239zM1712 152h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM1349 320v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191h198z" /> +<glyph unicode="¿" horiz-adv-x="977" d="M713 606v-74q0 -98 -44.5 -169t-152.5 -148q-109 -78 -137.5 -122t-28.5 -107q0 -57 43.5 -94t132.5 -37q79 0 169 29t186 71l102 -221q-98 -56 -221.5 -90.5t-229.5 -34.5q-220 0 -345.5 96.5t-125.5 265.5q0 108 48.5 187t191.5 184q95 70 121.5 107t26.5 98v59h264z M745 948q0 -84 -45 -127t-131 -43q-83 0 -128.5 44t-45.5 126q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126z" /> +<glyph unicode="À" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM713 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="Á" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM541 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="Â" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM938 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="Ã" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM543 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16 q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" /> +<glyph unicode="Ä" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM365 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM768 1743 q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="Å" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM959 1567q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM801 1565 q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" /> +<glyph unicode="Æ" horiz-adv-x="1950" d="M1829 0h-873v348h-491l-150 -348h-315l655 1462h1174v-254h-563v-321h526v-254h-526v-377h563v-256zM578 608h378v590h-127z" /> +<glyph unicode="Ç" horiz-adv-x="1305" d="M119 0zM805 1225q-175 0 -271 -131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 -488 193.5t-169 555.5q0 228 83 399.5t238.5 263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29zM959 -250q0 -128 -75.5 -185t-233.5 -57 q-78 0 -146 21v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" /> +<glyph unicode="È" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM634 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="É" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM424 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="Ê" horiz-adv-x="1147" d="M175 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM841 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="Ë" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM272 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM675 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99 q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="Ì" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM317 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="Í" horiz-adv-x="678" d="M167 0zM184 0v1462h310v-1462h-310zM167 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="Î" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM570 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="Ï" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM-3 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM400 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5 t-40.5 100.5z" /> +<glyph unicode="Ð" horiz-adv-x="1516" d="M47 850h137v612h459q358 0 556 -189t198 -528q0 -361 -205.5 -553t-593.5 -192h-414v596h-137v254zM1075 737q0 232 -104 351.5t-314 119.5h-163v-358h237v-254h-237v-340h131q450 0 450 481z" /> +<glyph unicode="Ñ" horiz-adv-x="1665" d="M184 0zM1481 0h-394l-636 1106h-9q19 -293 19 -418v-688h-277v1462h391l635 -1095h7q-15 285 -15 403v692h279v-1462zM668 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149 q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" /> +<glyph unicode="Ò" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM824 1579q-63 44 -185 142.5t-190 164.5v21h342 q63 -101 235 -301v-27h-202z" /> +<glyph unicode="Ó" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM658 1579v27q172 200 235 301h342v-21 q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="Ô" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM1047 1579q-157 93 -234 176q-78 -81 -229 -176h-203 v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="Õ" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM652 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149 q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" /> +<glyph unicode="Ö" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM474 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37 t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM877 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="×" d="M428 723l-299 301l152 154l301 -299l305 299l153 -150l-305 -305l301 -303l-149 -152l-305 301l-301 -299l-150 152z" /> +<glyph unicode="Ø" horiz-adv-x="1630" d="M1511 733q0 -363 -180 -558t-516 -195q-197 0 -336 65l-90 -135l-162 108l90 136q-198 194 -198 581q0 365 180.5 557.5t517.5 192.5q198 0 344 -70l84 125l160 -104l-88 -131q194 -194 194 -572zM444 733q0 -191 56 -307l506 756q-84 45 -189 45q-185 0 -279 -124.5 t-94 -369.5zM1186 733q0 180 -51 297l-500 -751q76 -39 180 -39q371 0 371 493z" /> +<glyph unicode="Ù" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM750 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="Ú" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM602 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="Û" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM1006 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357 q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="Ü" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM433 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 35t-37.5 98zM836 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="Ý" horiz-adv-x="1278" d="M0 0zM639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336zM461 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="Þ" horiz-adv-x="1286" d="M1194 770q0 -229 -142.5 -353t-404.5 -124h-153v-293h-310v1462h310v-229h178q254 0 388 -119t134 -344zM494 543h100q145 0 216 52.5t71 174.5q0 107 -63.5 159t-199.5 52h-124v-438z" /> +<glyph unicode="ß" horiz-adv-x="1456" d="M1249 1241q0 -64 -21 -112.5t-53 -86.5t-69 -67t-69 -53t-53 -45t-21 -43q0 -27 26.5 -53t92.5 -66q146 -91 198.5 -140t78 -110t25.5 -139q0 -172 -116.5 -259t-343.5 -87q-99 0 -171 14.5t-132 48.5v242q53 -36 135.5 -61t146.5 -25q168 0 168 123q0 41 -16 66.5 t-57 55.5t-115 72q-126 72 -175 131.5t-49 140.5q0 64 35 117t105 102q77 55 108 95t31 86q0 60 -63.5 100.5t-163.5 40.5q-116 0 -181 -52.5t-65 -148.5v-1128h-305v1139q0 201 146.5 314.5t404.5 113.5q244 0 391 -88.5t147 -237.5z" /> +<glyph unicode="à" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM614 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="á" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM441 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="â" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM843 1240q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="ã" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM467 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36 t-73 16.5z" /> +<glyph unicode="ä" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM285 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM688 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36 q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="å" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM883 1479q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM725 1477q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" /> +<glyph unicode="æ" horiz-adv-x="1878" d="M1329 -20q-137 0 -249.5 50.5t-184.5 155.5q-98 -117 -196.5 -161.5t-256.5 -44.5q-161 0 -258.5 94.5t-97.5 259.5q0 178 121 262.5t362 93.5l191 6v84q0 69 -44.5 102t-121.5 33q-140 0 -305 -77l-99 202q189 101 422 101q227 0 342 -131q66 64 152.5 96.5t206.5 32.5 q221 0 349 -137.5t128 -370.5v-148h-723q5 -130 77 -203t202 -73q196 0 380 88v-236q-79 -39 -171 -59t-226 -20zM760 518l-113 -4q-124 -4 -186 -47.5t-62 -134.5q0 -129 140 -129q101 0 161 61t60 162v92zM1307 922q-217 0 -234 -236h430q-2 112 -55 174t-141 62z" /> +<glyph unicode="ç" horiz-adv-x="1053" d="M92 0zM614 -20q-522 0 -522 573q0 285 142 435.5t407 150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18zM805 -250q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21 v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" /> +<glyph unicode="è" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M620 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="é" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M447 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="ê" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M860 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="ë" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M297 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="ì" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM274 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="í" horiz-adv-x="625" d="M145 0zM465 0h-305v1118h305v-1118zM145 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="î" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM544 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="ï" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM-29 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM374 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5 t-40.5 100.5z" /> +<glyph unicode="ð" horiz-adv-x="1268" d="M510 1303q-80 53 -152 92l101 176q144 -65 258 -141l225 139l100 -154l-170 -104q156 -143 230 -324.5t74 -413.5q0 -280 -145 -436.5t-400 -156.5q-245 0 -392 137t-147 372q0 233 130 369.5t351 136.5q205 0 275 -98l8 4q-67 162 -192 281l-230 -142l-100 156zM864 532 q0 108 -61 173t-168 65q-121 0 -176.5 -68.5t-55.5 -214.5q0 -140 60 -211t172 -71q123 0 176 82t53 245z" /> +<glyph unicode="ñ" horiz-adv-x="1346" d="M160 0zM1192 0h-305v653q0 121 -43 181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305v1118h233l41 -143h17q51 81 140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729zM508 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82 q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" /> +<glyph unicode="ò" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M612 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="ó" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M467 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="ô" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M864 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="õ" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M469 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" /> +<glyph unicode="ö" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M291 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM694 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="÷" d="M88 612v219h993v-219h-993zM444 373q0 76 37 113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 -110.5t-102 -40.5t-102.5 39t-37.5 112z" /> +<glyph unicode="ø" horiz-adv-x="1268" d="M1176 561q0 -273 -144 -427t-401 -154q-126 0 -234 45l-67 -101l-154 105l68 100q-152 156 -152 432q0 274 143 426t402 152q132 0 248 -52l55 82l152 -108l-58 -84q142 -155 142 -416zM403 561q0 -94 19 -166l317 475q-43 23 -106 23q-122 0 -176 -82.5t-54 -249.5z M864 561q0 81 -12 141l-309 -462q38 -15 92 -15q122 0 175.5 84.5t53.5 251.5z" /> +<glyph unicode="ù" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM620 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" /> +<glyph unicode="ú" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM498 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" /> +<glyph unicode="û" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM901 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357 q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="ü" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM326 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 -101.5 35t-37.5 98zM729 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="ý" horiz-adv-x="1165" d="M0 0zM0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM393 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5 h-203z" /> +<glyph unicode="þ" horiz-adv-x="1296" d="M465 973q50 81 131 123.5t186 42.5q198 0 310 -154.5t112 -423.5q0 -273 -111.5 -427t-310.5 -154q-213 0 -317 137h-14l7 -62l7 -94v-453h-305v2048h305v-391l-7 -120l-7 -72h14zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q205 0 205 338 q0 165 -50.5 247.5t-158.5 82.5z" /> +<glyph unicode="ÿ" horiz-adv-x="1165" d="M0 0zM0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM243 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 -101.5 35t-37.5 98zM646 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="ı" horiz-adv-x="625" d="M465 0h-305v1118h305v-1118z" /> +<glyph unicode="Œ" horiz-adv-x="1993" d="M1872 0h-873q-38 -9 -109 -14.5t-116 -5.5q-319 0 -487 197t-168 558q0 363 169.5 556.5t487.5 193.5q61 0 127 -7t101 -16h868v-254h-563v-321h526v-254h-526v-377h563v-256zM776 1227q-166 0 -252 -125.5t-86 -368.5q0 -244 86 -368.5t250 -124.5q65 0 126 10.5 t99 28.5v907q-35 19 -101.5 30t-121.5 11z" /> +<glyph unicode="œ" horiz-adv-x="2003" d="M1446 -20q-271 0 -420 155q-141 -155 -391 -155q-162 0 -286 70t-190.5 202t-66.5 309q0 277 141.5 427.5t399.5 150.5q112 0 212 -39.5t171 -116.5q144 156 383 156q244 0 380 -135t136 -373v-148h-746v-8q7 -127 81.5 -197.5t207.5 -70.5q107 0 200 21t193 67v-236 q-81 -39 -175.5 -59t-229.5 -20zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1405 922q-94 0 -156 -57.5t-71 -178.5h450q-2 111 -60.5 173.5t-162.5 62.5z" /> +<glyph unicode="Ÿ" horiz-adv-x="1278" d="M0 0zM639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336zM297 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97 t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" /> +<glyph unicode="ˆ" horiz-adv-x="1243" d="M852 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" /> +<glyph unicode="˚" horiz-adv-x="1182" d="M842 1479q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM684 1477q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" /> +<glyph unicode="˜" horiz-adv-x="1243" d="M457 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="635" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="238" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode=" " horiz-adv-x="105" /> +<glyph unicode="‐" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" /> +<glyph unicode="‑" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" /> +<glyph unicode="‒" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" /> +<glyph unicode="–" horiz-adv-x="1024" d="M82 436v230h860v-230h-860z" /> +<glyph unicode="—" horiz-adv-x="2048" d="M82 436v230h1884v-230h-1884z" /> +<glyph unicode="‘" horiz-adv-x="444" d="M39 961l-14 22q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280z" /> +<glyph unicode="’" horiz-adv-x="444" d="M406 1462l14 -22q-50 -197 -176 -479h-219q69 296 100 501h281z" /> +<glyph unicode="‚" horiz-adv-x="596" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280z" /> +<glyph unicode="“" horiz-adv-x="911" d="M492 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280zM25 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280z" /> +<glyph unicode="”" horiz-adv-x="911" d="M420 1440q-50 -197 -176 -479h-219q69 296 100 501h281zM887 1440q-50 -197 -176 -479h-219q69 296 100 501h280z" /> +<glyph unicode="„" horiz-adv-x="1061" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280zM926 215q-52 -202 -176 -479h-220q65 266 101 502h280z" /> +<glyph unicode="•" horiz-adv-x="770" d="M98 748q0 154 74 235.5t213 81.5q137 0 212 -82t75 -235q0 -152 -75.5 -235t-211.5 -83q-138 0 -212.5 83t-74.5 235z" /> +<glyph unicode="…" horiz-adv-x="1751" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM700 143q0 84 45 127t132 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-85 0 -131 44.5t-46 125.5zM1284 143q0 84 45 127t131 43 q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode="‹" horiz-adv-x="754" d="M82 573l371 455l219 -119l-279 -348l279 -348l-219 -119l-371 453v26z" /> +<glyph unicode="›" horiz-adv-x="754" d="M672 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26z" /> +<glyph unicode="⁄" horiz-adv-x="266" d="M657 1462l-811 -1462h-239l811 1462h239z" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode="⁴" horiz-adv-x="776" d="M758 737h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM395 905v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191h198z" /> +<glyph unicode="€" d="M803 1225q-122 0 -201 -70.5t-102 -204.5h403v-176h-418l-2 -35v-47l2 -33h355v-178h-338q51 -243 321 -243q143 0 275 57v-256q-116 -59 -293 -59q-245 0 -403 133t-199 368h-137v178h118q-4 23 -4 62l2 53h-116v176h133q37 242 199 382.5t405 140.5q188 0 352 -82 l-98 -232q-69 31 -129 48.5t-125 17.5z" /> +<glyph unicode="™" horiz-adv-x="1534" d="M381 741h-168v572h-197v149h564v-149h-199v-572zM956 741l-165 529h-7l4 -111v-418h-163v721h247l160 -510l170 510h240v-721h-168v408l4 121h-6l-174 -529h-142z" /> +<glyph unicode="" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" /> +<glyph horiz-adv-x="1296" d="M0 0z" /> +<hkern u1=""" u2="Ÿ" k="-20" /> +<hkern u1=""" u2="œ" k="123" /> +<hkern u1=""" u2="ü" k="61" /> +<hkern u1=""" u2="û" k="61" /> +<hkern u1=""" u2="ú" k="61" /> +<hkern u1=""" u2="ù" k="61" /> +<hkern u1=""" u2="ø" k="123" /> +<hkern u1=""" u2="ö" k="123" /> +<hkern u1=""" u2="õ" k="123" /> +<hkern u1=""" u2="ô" k="123" /> +<hkern u1=""" u2="ó" k="123" /> +<hkern u1=""" u2="ò" k="123" /> +<hkern u1=""" u2="ë" k="123" /> +<hkern u1=""" u2="ê" k="123" /> +<hkern u1=""" u2="é" k="123" /> +<hkern u1=""" u2="è" k="123" /> +<hkern u1=""" u2="ç" k="123" /> +<hkern u1=""" u2="æ" k="82" /> +<hkern u1=""" u2="å" k="82" /> +<hkern u1=""" u2="ä" k="82" /> +<hkern u1=""" u2="ã" k="82" /> +<hkern u1=""" u2="â" k="82" /> +<hkern u1=""" u2="á" k="82" /> +<hkern u1=""" u2="à" k="123" /> +<hkern u1=""" u2="Ý" k="-20" /> +<hkern u1=""" u2="Å" k="143" /> +<hkern u1=""" u2="Ä" k="143" /> +<hkern u1=""" u2="Ã" k="143" /> +<hkern u1=""" u2="Â" k="143" /> +<hkern u1=""" u2="Á" k="143" /> +<hkern u1=""" u2="À" k="143" /> +<hkern u1=""" u2="u" k="61" /> +<hkern u1=""" u2="s" k="61" /> +<hkern u1=""" u2="r" k="61" /> +<hkern u1=""" u2="q" k="123" /> +<hkern u1=""" u2="p" k="61" /> +<hkern u1=""" u2="o" k="123" /> +<hkern u1=""" u2="n" k="61" /> +<hkern u1=""" u2="m" k="61" /> +<hkern u1=""" u2="g" k="61" /> +<hkern u1=""" u2="e" k="123" /> +<hkern u1=""" u2="d" k="123" /> +<hkern u1=""" u2="c" k="123" /> +<hkern u1=""" u2="a" k="82" /> +<hkern u1=""" u2="Y" k="-20" /> +<hkern u1=""" u2="W" k="-41" /> +<hkern u1=""" u2="V" k="-41" /> +<hkern u1=""" u2="T" k="-41" /> +<hkern u1=""" u2="A" k="143" /> +<hkern u1="'" u2="Ÿ" k="-20" /> +<hkern u1="'" u2="œ" k="123" /> +<hkern u1="'" u2="ü" k="61" /> +<hkern u1="'" u2="û" k="61" /> +<hkern u1="'" u2="ú" k="61" /> +<hkern u1="'" u2="ù" k="61" /> +<hkern u1="'" u2="ø" k="123" /> +<hkern u1="'" u2="ö" k="123" /> +<hkern u1="'" u2="õ" k="123" /> +<hkern u1="'" u2="ô" k="123" /> +<hkern u1="'" u2="ó" k="123" /> +<hkern u1="'" u2="ò" k="123" /> +<hkern u1="'" u2="ë" k="123" /> +<hkern u1="'" u2="ê" k="123" /> +<hkern u1="'" u2="é" k="123" /> +<hkern u1="'" u2="è" k="123" /> +<hkern u1="'" u2="ç" k="123" /> +<hkern u1="'" u2="æ" k="82" /> +<hkern u1="'" u2="å" k="82" /> +<hkern u1="'" u2="ä" k="82" /> +<hkern u1="'" u2="ã" k="82" /> +<hkern u1="'" u2="â" k="82" /> +<hkern u1="'" u2="á" k="82" /> +<hkern u1="'" u2="à" k="123" /> +<hkern u1="'" u2="Ý" k="-20" /> +<hkern u1="'" u2="Å" k="143" /> +<hkern u1="'" u2="Ä" k="143" /> +<hkern u1="'" u2="Ã" k="143" /> +<hkern u1="'" u2="Â" k="143" /> +<hkern u1="'" u2="Á" k="143" /> +<hkern u1="'" u2="À" k="143" /> +<hkern u1="'" u2="u" k="61" /> +<hkern u1="'" u2="s" k="61" /> +<hkern u1="'" u2="r" k="61" /> +<hkern u1="'" u2="q" k="123" /> +<hkern u1="'" u2="p" k="61" /> +<hkern u1="'" u2="o" k="123" /> +<hkern u1="'" u2="n" k="61" /> +<hkern u1="'" u2="m" k="61" /> +<hkern u1="'" u2="g" k="61" /> +<hkern u1="'" u2="e" k="123" /> +<hkern u1="'" u2="d" k="123" /> +<hkern u1="'" u2="c" k="123" /> +<hkern u1="'" u2="a" k="82" /> +<hkern u1="'" u2="Y" k="-20" /> +<hkern u1="'" u2="W" k="-41" /> +<hkern u1="'" u2="V" k="-41" /> +<hkern u1="'" u2="T" k="-41" /> +<hkern u1="'" u2="A" k="143" /> +<hkern u1="(" u2="J" k="-184" /> +<hkern u1="," u2="Ÿ" k="123" /> +<hkern u1="," u2="Œ" k="102" /> +<hkern u1="," u2="Ý" k="123" /> +<hkern u1="," u2="Ü" k="41" /> +<hkern u1="," u2="Û" k="41" /> +<hkern u1="," u2="Ú" k="41" /> +<hkern u1="," u2="Ù" k="41" /> +<hkern u1="," u2="Ø" k="102" /> +<hkern u1="," u2="Ö" k="102" /> +<hkern u1="," u2="Õ" k="102" /> +<hkern u1="," u2="Ô" k="102" /> +<hkern u1="," u2="Ó" k="102" /> +<hkern u1="," u2="Ò" k="102" /> +<hkern u1="," u2="Ç" k="102" /> +<hkern u1="," u2="Y" k="123" /> +<hkern u1="," u2="W" k="123" /> +<hkern u1="," u2="V" k="123" /> +<hkern u1="," u2="U" k="41" /> +<hkern u1="," u2="T" k="143" /> +<hkern u1="," u2="Q" k="102" /> +<hkern u1="," u2="O" k="102" /> +<hkern u1="," u2="G" k="102" /> +<hkern u1="," u2="C" k="102" /> +<hkern u1="-" u2="T" k="82" /> +<hkern u1="." u2="Ÿ" k="123" /> +<hkern u1="." u2="Œ" k="102" /> +<hkern u1="." u2="Ý" k="123" /> +<hkern u1="." u2="Ü" k="41" /> +<hkern u1="." u2="Û" k="41" /> +<hkern u1="." u2="Ú" k="41" /> +<hkern u1="." u2="Ù" k="41" /> +<hkern u1="." u2="Ø" k="102" /> +<hkern u1="." u2="Ö" k="102" /> +<hkern u1="." u2="Õ" k="102" /> +<hkern u1="." u2="Ô" k="102" /> +<hkern u1="." u2="Ó" k="102" /> +<hkern u1="." u2="Ò" k="102" /> +<hkern u1="." u2="Ç" k="102" /> +<hkern u1="." u2="Y" k="123" /> +<hkern u1="." u2="W" k="123" /> +<hkern u1="." u2="V" k="123" /> +<hkern u1="." u2="U" k="41" /> +<hkern u1="." u2="T" k="143" /> +<hkern u1="." u2="Q" k="102" /> +<hkern u1="." u2="O" k="102" /> +<hkern u1="." u2="G" k="102" /> +<hkern u1="." u2="C" k="102" /> +<hkern u1="A" u2="”" k="143" /> +<hkern u1="A" u2="’" k="143" /> +<hkern u1="A" u2="Ÿ" k="123" /> +<hkern u1="A" u2="Œ" k="41" /> +<hkern u1="A" u2="Ý" k="123" /> +<hkern u1="A" u2="Ø" k="41" /> +<hkern u1="A" u2="Ö" k="41" /> +<hkern u1="A" u2="Õ" k="41" /> +<hkern u1="A" u2="Ô" k="41" /> +<hkern u1="A" u2="Ó" k="41" /> +<hkern u1="A" u2="Ò" k="41" /> +<hkern u1="A" u2="Ç" k="41" /> +<hkern u1="A" u2="Y" k="123" /> +<hkern u1="A" u2="W" k="82" /> +<hkern u1="A" u2="V" k="82" /> +<hkern u1="A" u2="T" k="143" /> +<hkern u1="A" u2="Q" k="41" /> +<hkern u1="A" u2="O" k="41" /> +<hkern u1="A" u2="J" k="-266" /> +<hkern u1="A" u2="G" k="41" /> +<hkern u1="A" u2="C" k="41" /> +<hkern u1="A" u2="'" k="143" /> +<hkern u1="A" u2=""" k="143" /> +<hkern u1="B" u2="„" k="82" /> +<hkern u1="B" u2="‚" k="82" /> +<hkern u1="B" u2="Ÿ" k="20" /> +<hkern u1="B" u2="Ý" k="20" /> +<hkern u1="B" u2="Å" k="41" /> +<hkern u1="B" u2="Ä" k="41" /> +<hkern u1="B" u2="Ã" k="41" /> +<hkern u1="B" u2="Â" k="41" /> +<hkern u1="B" u2="Á" k="41" /> +<hkern u1="B" u2="À" k="41" /> +<hkern u1="B" u2="Z" k="20" /> +<hkern u1="B" u2="Y" k="20" /> +<hkern u1="B" u2="X" k="41" /> +<hkern u1="B" u2="W" k="20" /> +<hkern u1="B" u2="V" k="20" /> +<hkern u1="B" u2="T" k="61" /> +<hkern u1="B" u2="A" k="41" /> +<hkern u1="B" u2="." k="82" /> +<hkern u1="B" u2="," k="82" /> +<hkern u1="C" u2="Œ" k="41" /> +<hkern u1="C" u2="Ø" k="41" /> +<hkern u1="C" u2="Ö" k="41" /> +<hkern u1="C" u2="Õ" k="41" /> +<hkern u1="C" u2="Ô" k="41" /> +<hkern u1="C" u2="Ó" k="41" /> +<hkern u1="C" u2="Ò" k="41" /> +<hkern u1="C" u2="Ç" k="41" /> +<hkern u1="C" u2="Q" k="41" /> +<hkern u1="C" u2="O" k="41" /> +<hkern u1="C" u2="G" k="41" /> +<hkern u1="C" u2="C" k="41" /> +<hkern u1="D" u2="„" k="82" /> +<hkern u1="D" u2="‚" k="82" /> +<hkern u1="D" u2="Ÿ" k="20" /> +<hkern u1="D" u2="Ý" k="20" /> +<hkern u1="D" u2="Å" k="41" /> +<hkern u1="D" u2="Ä" k="41" /> +<hkern u1="D" u2="Ã" k="41" /> +<hkern u1="D" u2="Â" k="41" /> +<hkern u1="D" u2="Á" k="41" /> +<hkern u1="D" u2="À" k="41" /> +<hkern u1="D" u2="Z" k="20" /> +<hkern u1="D" u2="Y" k="20" /> +<hkern u1="D" u2="X" k="41" /> +<hkern u1="D" u2="W" k="20" /> +<hkern u1="D" u2="V" k="20" /> +<hkern u1="D" u2="T" k="61" /> +<hkern u1="D" u2="A" k="41" /> +<hkern u1="D" u2="." k="82" /> +<hkern u1="D" u2="," k="82" /> +<hkern u1="E" u2="J" k="-123" /> +<hkern u1="F" u2="„" k="123" /> +<hkern u1="F" u2="‚" k="123" /> +<hkern u1="F" u2="Å" k="41" /> +<hkern u1="F" u2="Ä" k="41" /> +<hkern u1="F" u2="Ã" k="41" /> +<hkern u1="F" u2="Â" k="41" /> +<hkern u1="F" u2="Á" k="41" /> +<hkern u1="F" u2="À" k="41" /> +<hkern u1="F" u2="A" k="41" /> +<hkern u1="F" u2="?" k="-41" /> +<hkern u1="F" u2="." k="123" /> +<hkern u1="F" u2="," k="123" /> +<hkern u1="K" u2="Œ" k="41" /> +<hkern u1="K" u2="Ø" k="41" /> +<hkern u1="K" u2="Ö" k="41" /> +<hkern u1="K" u2="Õ" k="41" /> +<hkern u1="K" u2="Ô" k="41" /> +<hkern u1="K" u2="Ó" k="41" /> +<hkern u1="K" u2="Ò" k="41" /> +<hkern u1="K" u2="Ç" k="41" /> +<hkern u1="K" u2="Q" k="41" /> +<hkern u1="K" u2="O" k="41" /> +<hkern u1="K" u2="G" k="41" /> +<hkern u1="K" u2="C" k="41" /> +<hkern u1="L" u2="”" k="164" /> +<hkern u1="L" u2="’" k="164" /> +<hkern u1="L" u2="Ÿ" k="61" /> +<hkern u1="L" u2="Œ" k="41" /> +<hkern u1="L" u2="Ý" k="61" /> +<hkern u1="L" u2="Ü" k="20" /> +<hkern u1="L" u2="Û" k="20" /> +<hkern u1="L" u2="Ú" k="20" /> +<hkern u1="L" u2="Ù" k="20" /> +<hkern u1="L" u2="Ø" k="41" /> +<hkern u1="L" u2="Ö" k="41" /> +<hkern u1="L" u2="Õ" k="41" /> +<hkern u1="L" u2="Ô" k="41" /> +<hkern u1="L" u2="Ó" k="41" /> +<hkern u1="L" u2="Ò" k="41" /> +<hkern u1="L" u2="Ç" k="41" /> +<hkern u1="L" u2="Y" k="61" /> +<hkern u1="L" u2="W" k="41" /> +<hkern u1="L" u2="V" k="41" /> +<hkern u1="L" u2="U" k="20" /> +<hkern u1="L" u2="T" k="41" /> +<hkern u1="L" u2="Q" k="41" /> +<hkern u1="L" u2="O" k="41" /> +<hkern u1="L" u2="G" k="41" /> +<hkern u1="L" u2="C" k="41" /> +<hkern u1="L" u2="'" k="164" /> +<hkern u1="L" u2=""" k="164" /> +<hkern u1="O" u2="„" k="82" /> +<hkern u1="O" u2="‚" k="82" /> +<hkern u1="O" u2="Ÿ" k="20" /> +<hkern u1="O" u2="Ý" k="20" /> +<hkern u1="O" u2="Å" k="41" /> +<hkern u1="O" u2="Ä" k="41" /> +<hkern u1="O" u2="Ã" k="41" /> +<hkern u1="O" u2="Â" k="41" /> +<hkern u1="O" u2="Á" k="41" /> +<hkern u1="O" u2="À" k="41" /> +<hkern u1="O" u2="Z" k="20" /> +<hkern u1="O" u2="Y" k="20" /> +<hkern u1="O" u2="X" k="41" /> +<hkern u1="O" u2="W" k="20" /> +<hkern u1="O" u2="V" k="20" /> +<hkern u1="O" u2="T" k="61" /> +<hkern u1="O" u2="A" k="41" /> +<hkern u1="O" u2="." k="82" /> +<hkern u1="O" u2="," k="82" /> +<hkern u1="P" u2="„" k="266" /> +<hkern u1="P" u2="‚" k="266" /> +<hkern u1="P" u2="Å" k="102" /> +<hkern u1="P" u2="Ä" k="102" /> +<hkern u1="P" u2="Ã" k="102" /> +<hkern u1="P" u2="Â" k="102" /> +<hkern u1="P" u2="Á" k="102" /> +<hkern u1="P" u2="À" k="102" /> +<hkern u1="P" u2="Z" k="20" /> +<hkern u1="P" u2="X" k="41" /> +<hkern u1="P" u2="A" k="102" /> +<hkern u1="P" u2="." k="266" /> +<hkern u1="P" u2="," k="266" /> +<hkern u1="Q" u2="„" k="82" /> +<hkern u1="Q" u2="‚" k="82" /> +<hkern u1="Q" u2="Ÿ" k="20" /> +<hkern u1="Q" u2="Ý" k="20" /> +<hkern u1="Q" u2="Å" k="41" /> +<hkern u1="Q" u2="Ä" k="41" /> +<hkern u1="Q" u2="Ã" k="41" /> +<hkern u1="Q" u2="Â" k="41" /> +<hkern u1="Q" u2="Á" k="41" /> +<hkern u1="Q" u2="À" k="41" /> +<hkern u1="Q" u2="Z" k="20" /> +<hkern u1="Q" u2="Y" k="20" /> +<hkern u1="Q" u2="X" k="41" /> +<hkern u1="Q" u2="W" k="20" /> +<hkern u1="Q" u2="V" k="20" /> +<hkern u1="Q" u2="T" k="61" /> +<hkern u1="Q" u2="A" k="41" /> +<hkern u1="Q" u2="." k="82" /> +<hkern u1="Q" u2="," k="82" /> +<hkern u1="T" u2="„" k="123" /> +<hkern u1="T" u2="‚" k="123" /> +<hkern u1="T" u2="—" k="82" /> +<hkern u1="T" u2="–" k="82" /> +<hkern u1="T" u2="œ" k="143" /> +<hkern u1="T" u2="Œ" k="41" /> +<hkern u1="T" u2="ý" k="41" /> +<hkern u1="T" u2="ü" k="102" /> +<hkern u1="T" u2="û" k="102" /> +<hkern u1="T" u2="ú" k="102" /> +<hkern u1="T" u2="ù" k="102" /> +<hkern u1="T" u2="ø" k="143" /> +<hkern u1="T" u2="ö" k="143" /> +<hkern u1="T" u2="õ" k="143" /> +<hkern u1="T" u2="ô" k="143" /> +<hkern u1="T" u2="ó" k="143" /> +<hkern u1="T" u2="ò" k="143" /> +<hkern u1="T" u2="ë" k="143" /> +<hkern u1="T" u2="ê" k="143" /> +<hkern u1="T" u2="é" k="143" /> +<hkern u1="T" u2="è" k="143" /> +<hkern u1="T" u2="ç" k="143" /> +<hkern u1="T" u2="æ" k="164" /> +<hkern u1="T" u2="å" k="164" /> +<hkern u1="T" u2="ä" k="164" /> +<hkern u1="T" u2="ã" k="164" /> +<hkern u1="T" u2="â" k="164" /> +<hkern u1="T" u2="á" k="164" /> +<hkern u1="T" u2="à" k="143" /> +<hkern u1="T" u2="Ø" k="41" /> +<hkern u1="T" u2="Ö" k="41" /> +<hkern u1="T" u2="Õ" k="41" /> +<hkern u1="T" u2="Ô" k="41" /> +<hkern u1="T" u2="Ó" k="41" /> +<hkern u1="T" u2="Ò" k="41" /> +<hkern u1="T" u2="Ç" k="41" /> +<hkern u1="T" u2="Å" k="143" /> +<hkern u1="T" u2="Ä" k="143" /> +<hkern u1="T" u2="Ã" k="143" /> +<hkern u1="T" u2="Â" k="143" /> +<hkern u1="T" u2="Á" k="143" /> +<hkern u1="T" u2="À" k="143" /> +<hkern u1="T" u2="z" k="82" /> +<hkern u1="T" u2="y" k="41" /> +<hkern u1="T" u2="x" k="41" /> +<hkern u1="T" u2="w" k="41" /> +<hkern u1="T" u2="v" k="41" /> +<hkern u1="T" u2="u" k="102" /> +<hkern u1="T" u2="s" k="123" /> +<hkern u1="T" u2="r" k="102" /> +<hkern u1="T" u2="q" k="143" /> +<hkern u1="T" u2="p" k="102" /> +<hkern u1="T" u2="o" k="143" /> +<hkern u1="T" u2="n" k="102" /> +<hkern u1="T" u2="m" k="102" /> +<hkern u1="T" u2="g" k="143" /> +<hkern u1="T" u2="e" k="143" /> +<hkern u1="T" u2="d" k="143" /> +<hkern u1="T" u2="c" k="143" /> +<hkern u1="T" u2="a" k="164" /> +<hkern u1="T" u2="T" k="-41" /> +<hkern u1="T" u2="Q" k="41" /> +<hkern u1="T" u2="O" k="41" /> +<hkern u1="T" u2="G" k="41" /> +<hkern u1="T" u2="C" k="41" /> +<hkern u1="T" u2="A" k="143" /> +<hkern u1="T" u2="?" k="-41" /> +<hkern u1="T" u2="." k="123" /> +<hkern u1="T" u2="-" k="82" /> +<hkern u1="T" u2="," k="123" /> +<hkern u1="U" u2="„" k="41" /> +<hkern u1="U" u2="‚" k="41" /> +<hkern u1="U" u2="Å" k="20" /> +<hkern u1="U" u2="Ä" k="20" /> +<hkern u1="U" u2="Ã" k="20" /> +<hkern u1="U" u2="Â" k="20" /> +<hkern u1="U" u2="Á" k="20" /> +<hkern u1="U" u2="À" k="20" /> +<hkern u1="U" u2="A" k="20" /> +<hkern u1="U" u2="." k="41" /> +<hkern u1="U" u2="," k="41" /> +<hkern u1="V" u2="„" k="102" /> +<hkern u1="V" u2="‚" k="102" /> +<hkern u1="V" u2="œ" k="41" /> +<hkern u1="V" u2="Œ" k="20" /> +<hkern u1="V" u2="ü" k="20" /> +<hkern u1="V" u2="û" k="20" /> +<hkern u1="V" u2="ú" k="20" /> +<hkern u1="V" u2="ù" k="20" /> +<hkern u1="V" u2="ø" k="41" /> +<hkern u1="V" u2="ö" k="41" /> +<hkern u1="V" u2="õ" k="41" /> +<hkern u1="V" u2="ô" k="41" /> +<hkern u1="V" u2="ó" k="41" /> +<hkern u1="V" u2="ò" k="41" /> +<hkern u1="V" u2="ë" k="41" /> +<hkern u1="V" u2="ê" k="41" /> +<hkern u1="V" u2="é" k="41" /> +<hkern u1="V" u2="è" k="41" /> +<hkern u1="V" u2="ç" k="41" /> +<hkern u1="V" u2="æ" k="41" /> +<hkern u1="V" u2="å" k="41" /> +<hkern u1="V" u2="ä" k="41" /> +<hkern u1="V" u2="ã" k="41" /> +<hkern u1="V" u2="â" k="41" /> +<hkern u1="V" u2="á" k="41" /> +<hkern u1="V" u2="à" k="41" /> +<hkern u1="V" u2="Ø" k="20" /> +<hkern u1="V" u2="Ö" k="20" /> +<hkern u1="V" u2="Õ" k="20" /> +<hkern u1="V" u2="Ô" k="20" /> +<hkern u1="V" u2="Ó" k="20" /> +<hkern u1="V" u2="Ò" k="20" /> +<hkern u1="V" u2="Ç" k="20" /> +<hkern u1="V" u2="Å" k="82" /> +<hkern u1="V" u2="Ä" k="82" /> +<hkern u1="V" u2="Ã" k="82" /> +<hkern u1="V" u2="Â" k="82" /> +<hkern u1="V" u2="Á" k="82" /> +<hkern u1="V" u2="À" k="82" /> +<hkern u1="V" u2="u" k="20" /> +<hkern u1="V" u2="s" k="20" /> +<hkern u1="V" u2="r" k="20" /> +<hkern u1="V" u2="q" k="41" /> +<hkern u1="V" u2="p" k="20" /> +<hkern u1="V" u2="o" k="41" /> +<hkern u1="V" u2="n" k="20" /> +<hkern u1="V" u2="m" k="20" /> +<hkern u1="V" u2="g" k="20" /> +<hkern u1="V" u2="e" k="41" /> +<hkern u1="V" u2="d" k="41" /> +<hkern u1="V" u2="c" k="41" /> +<hkern u1="V" u2="a" k="41" /> +<hkern u1="V" u2="Q" k="20" /> +<hkern u1="V" u2="O" k="20" /> +<hkern u1="V" u2="G" k="20" /> +<hkern u1="V" u2="C" k="20" /> +<hkern u1="V" u2="A" k="82" /> +<hkern u1="V" u2="?" k="-41" /> +<hkern u1="V" u2="." k="102" /> +<hkern u1="V" u2="," k="102" /> +<hkern u1="W" u2="„" k="102" /> +<hkern u1="W" u2="‚" k="102" /> +<hkern u1="W" u2="œ" k="41" /> +<hkern u1="W" u2="Œ" k="20" /> +<hkern u1="W" u2="ü" k="20" /> +<hkern u1="W" u2="û" k="20" /> +<hkern u1="W" u2="ú" k="20" /> +<hkern u1="W" u2="ù" k="20" /> +<hkern u1="W" u2="ø" k="41" /> +<hkern u1="W" u2="ö" k="41" /> +<hkern u1="W" u2="õ" k="41" /> +<hkern u1="W" u2="ô" k="41" /> +<hkern u1="W" u2="ó" k="41" /> +<hkern u1="W" u2="ò" k="41" /> +<hkern u1="W" u2="ë" k="41" /> +<hkern u1="W" u2="ê" k="41" /> +<hkern u1="W" u2="é" k="41" /> +<hkern u1="W" u2="è" k="41" /> +<hkern u1="W" u2="ç" k="41" /> +<hkern u1="W" u2="æ" k="41" /> +<hkern u1="W" u2="å" k="41" /> +<hkern u1="W" u2="ä" k="41" /> +<hkern u1="W" u2="ã" k="41" /> +<hkern u1="W" u2="â" k="41" /> +<hkern u1="W" u2="á" k="41" /> +<hkern u1="W" u2="à" k="41" /> +<hkern u1="W" u2="Ø" k="20" /> +<hkern u1="W" u2="Ö" k="20" /> +<hkern u1="W" u2="Õ" k="20" /> +<hkern u1="W" u2="Ô" k="20" /> +<hkern u1="W" u2="Ó" k="20" /> +<hkern u1="W" u2="Ò" k="20" /> +<hkern u1="W" u2="Ç" k="20" /> +<hkern u1="W" u2="Å" k="82" /> +<hkern u1="W" u2="Ä" k="82" /> +<hkern u1="W" u2="Ã" k="82" /> +<hkern u1="W" u2="Â" k="82" /> +<hkern u1="W" u2="Á" k="82" /> +<hkern u1="W" u2="À" k="82" /> +<hkern u1="W" u2="u" k="20" /> +<hkern u1="W" u2="s" k="20" /> +<hkern u1="W" u2="r" k="20" /> +<hkern u1="W" u2="q" k="41" /> +<hkern u1="W" u2="p" k="20" /> +<hkern u1="W" u2="o" k="41" /> +<hkern u1="W" u2="n" k="20" /> +<hkern u1="W" u2="m" k="20" /> +<hkern u1="W" u2="g" k="20" /> +<hkern u1="W" u2="e" k="41" /> +<hkern u1="W" u2="d" k="41" /> +<hkern u1="W" u2="c" k="41" /> +<hkern u1="W" u2="a" k="41" /> +<hkern u1="W" u2="Q" k="20" /> +<hkern u1="W" u2="O" k="20" /> +<hkern u1="W" u2="G" k="20" /> +<hkern u1="W" u2="C" k="20" /> +<hkern u1="W" u2="A" k="82" /> +<hkern u1="W" u2="?" k="-41" /> +<hkern u1="W" u2="." k="102" /> +<hkern u1="W" u2="," k="102" /> +<hkern u1="X" u2="Œ" k="41" /> +<hkern u1="X" u2="Ø" k="41" /> +<hkern u1="X" u2="Ö" k="41" /> +<hkern u1="X" u2="Õ" k="41" /> +<hkern u1="X" u2="Ô" k="41" /> +<hkern u1="X" u2="Ó" k="41" /> +<hkern u1="X" u2="Ò" k="41" /> +<hkern u1="X" u2="Ç" k="41" /> +<hkern u1="X" u2="Q" k="41" /> +<hkern u1="X" u2="O" k="41" /> +<hkern u1="X" u2="G" k="41" /> +<hkern u1="X" u2="C" k="41" /> +<hkern u1="Y" u2="„" k="123" /> +<hkern u1="Y" u2="‚" k="123" /> +<hkern u1="Y" u2="œ" k="102" /> +<hkern u1="Y" u2="Œ" k="41" /> +<hkern u1="Y" u2="ü" k="61" /> +<hkern u1="Y" u2="û" k="61" /> +<hkern u1="Y" u2="ú" k="61" /> +<hkern u1="Y" u2="ù" k="61" /> +<hkern u1="Y" u2="ø" k="102" /> +<hkern u1="Y" u2="ö" k="102" /> +<hkern u1="Y" u2="õ" k="102" /> +<hkern u1="Y" u2="ô" k="102" /> +<hkern u1="Y" u2="ó" k="102" /> +<hkern u1="Y" u2="ò" k="102" /> +<hkern u1="Y" u2="ë" k="102" /> +<hkern u1="Y" u2="ê" k="102" /> +<hkern u1="Y" u2="é" k="102" /> +<hkern u1="Y" u2="è" k="102" /> +<hkern u1="Y" u2="ç" k="102" /> +<hkern u1="Y" u2="æ" k="102" /> +<hkern u1="Y" u2="å" k="102" /> +<hkern u1="Y" u2="ä" k="102" /> +<hkern u1="Y" u2="ã" k="102" /> +<hkern u1="Y" u2="â" k="102" /> +<hkern u1="Y" u2="á" k="102" /> +<hkern u1="Y" u2="à" k="102" /> +<hkern u1="Y" u2="Ø" k="41" /> +<hkern u1="Y" u2="Ö" k="41" /> +<hkern u1="Y" u2="Õ" k="41" /> +<hkern u1="Y" u2="Ô" k="41" /> +<hkern u1="Y" u2="Ó" k="41" /> +<hkern u1="Y" u2="Ò" k="41" /> +<hkern u1="Y" u2="Ç" k="41" /> +<hkern u1="Y" u2="Å" k="123" /> +<hkern u1="Y" u2="Ä" k="123" /> +<hkern u1="Y" u2="Ã" k="123" /> +<hkern u1="Y" u2="Â" k="123" /> +<hkern u1="Y" u2="Á" k="123" /> +<hkern u1="Y" u2="À" k="123" /> +<hkern u1="Y" u2="z" k="41" /> +<hkern u1="Y" u2="u" k="61" /> +<hkern u1="Y" u2="s" k="82" /> +<hkern u1="Y" u2="r" k="61" /> +<hkern u1="Y" u2="q" k="102" /> +<hkern u1="Y" u2="p" k="61" /> +<hkern u1="Y" u2="o" k="102" /> +<hkern u1="Y" u2="n" k="61" /> +<hkern u1="Y" u2="m" k="61" /> +<hkern u1="Y" u2="g" k="41" /> +<hkern u1="Y" u2="e" k="102" /> +<hkern u1="Y" u2="d" k="102" /> +<hkern u1="Y" u2="c" k="102" /> +<hkern u1="Y" u2="a" k="102" /> +<hkern u1="Y" u2="Q" k="41" /> +<hkern u1="Y" u2="O" k="41" /> +<hkern u1="Y" u2="G" k="41" /> +<hkern u1="Y" u2="C" k="41" /> +<hkern u1="Y" u2="A" k="123" /> +<hkern u1="Y" u2="?" k="-41" /> +<hkern u1="Y" u2="." k="123" /> +<hkern u1="Y" u2="," k="123" /> +<hkern u1="Z" u2="Œ" k="20" /> +<hkern u1="Z" u2="Ø" k="20" /> +<hkern u1="Z" u2="Ö" k="20" /> +<hkern u1="Z" u2="Õ" k="20" /> +<hkern u1="Z" u2="Ô" k="20" /> +<hkern u1="Z" u2="Ó" k="20" /> +<hkern u1="Z" u2="Ò" k="20" /> +<hkern u1="Z" u2="Ç" k="20" /> +<hkern u1="Z" u2="Q" k="20" /> +<hkern u1="Z" u2="O" k="20" /> +<hkern u1="Z" u2="G" k="20" /> +<hkern u1="Z" u2="C" k="20" /> +<hkern u1="[" u2="J" k="-184" /> +<hkern u1="a" u2="”" k="20" /> +<hkern u1="a" u2="’" k="20" /> +<hkern u1="a" u2="'" k="20" /> +<hkern u1="a" u2=""" k="20" /> +<hkern u1="b" u2="”" k="20" /> +<hkern u1="b" u2="’" k="20" /> +<hkern u1="b" u2="ý" k="41" /> +<hkern u1="b" u2="z" k="20" /> +<hkern u1="b" u2="y" k="41" /> +<hkern u1="b" u2="x" k="41" /> +<hkern u1="b" u2="w" k="41" /> +<hkern u1="b" u2="v" k="41" /> +<hkern u1="b" u2="'" k="20" /> +<hkern u1="b" u2=""" k="20" /> +<hkern u1="c" u2="”" k="-41" /> +<hkern u1="c" u2="’" k="-41" /> +<hkern u1="c" u2="'" k="-41" /> +<hkern u1="c" u2=""" k="-41" /> +<hkern u1="e" u2="”" k="20" /> +<hkern u1="e" u2="’" k="20" /> +<hkern u1="e" u2="ý" k="41" /> +<hkern u1="e" u2="z" k="20" /> +<hkern u1="e" u2="y" k="41" /> +<hkern u1="e" u2="x" k="41" /> +<hkern u1="e" u2="w" k="41" /> +<hkern u1="e" u2="v" k="41" /> +<hkern u1="e" u2="'" k="20" /> +<hkern u1="e" u2=""" k="20" /> +<hkern u1="f" u2="”" k="-123" /> +<hkern u1="f" u2="’" k="-123" /> +<hkern u1="f" u2="'" k="-123" /> +<hkern u1="f" u2=""" k="-123" /> +<hkern u1="h" u2="”" k="20" /> +<hkern u1="h" u2="’" k="20" /> +<hkern u1="h" u2="'" k="20" /> +<hkern u1="h" u2=""" k="20" /> +<hkern u1="k" u2="œ" k="41" /> +<hkern u1="k" u2="ø" k="41" /> +<hkern u1="k" u2="ö" k="41" /> +<hkern u1="k" u2="õ" k="41" /> +<hkern u1="k" u2="ô" k="41" /> +<hkern u1="k" u2="ó" k="41" /> +<hkern u1="k" u2="ò" k="41" /> +<hkern u1="k" u2="ë" k="41" /> +<hkern u1="k" u2="ê" k="41" /> +<hkern u1="k" u2="é" k="41" /> +<hkern u1="k" u2="è" k="41" /> +<hkern u1="k" u2="ç" k="41" /> +<hkern u1="k" u2="à" k="41" /> +<hkern u1="k" u2="q" k="41" /> +<hkern u1="k" u2="o" k="41" /> +<hkern u1="k" u2="e" k="41" /> +<hkern u1="k" u2="d" k="41" /> +<hkern u1="k" u2="c" k="41" /> +<hkern u1="m" u2="”" k="20" /> +<hkern u1="m" u2="’" k="20" /> +<hkern u1="m" u2="'" k="20" /> +<hkern u1="m" u2=""" k="20" /> +<hkern u1="n" u2="”" k="20" /> +<hkern u1="n" u2="’" k="20" /> +<hkern u1="n" u2="'" k="20" /> +<hkern u1="n" u2=""" k="20" /> +<hkern u1="o" u2="”" k="20" /> +<hkern u1="o" u2="’" k="20" /> +<hkern u1="o" u2="ý" k="41" /> +<hkern u1="o" u2="z" k="20" /> +<hkern u1="o" u2="y" k="41" /> +<hkern u1="o" u2="x" k="41" /> +<hkern u1="o" u2="w" k="41" /> +<hkern u1="o" u2="v" k="41" /> +<hkern u1="o" u2="'" k="20" /> +<hkern u1="o" u2=""" k="20" /> +<hkern u1="p" u2="”" k="20" /> +<hkern u1="p" u2="’" k="20" /> +<hkern u1="p" u2="ý" k="41" /> +<hkern u1="p" u2="z" k="20" /> +<hkern u1="p" u2="y" k="41" /> +<hkern u1="p" u2="x" k="41" /> +<hkern u1="p" u2="w" k="41" /> +<hkern u1="p" u2="v" k="41" /> +<hkern u1="p" u2="'" k="20" /> +<hkern u1="p" u2=""" k="20" /> +<hkern u1="r" u2="”" k="-82" /> +<hkern u1="r" u2="’" k="-82" /> +<hkern u1="r" u2="œ" k="41" /> +<hkern u1="r" u2="ø" k="41" /> +<hkern u1="r" u2="ö" k="41" /> +<hkern u1="r" u2="õ" k="41" /> +<hkern u1="r" u2="ô" k="41" /> +<hkern u1="r" u2="ó" k="41" /> +<hkern u1="r" u2="ò" k="41" /> +<hkern u1="r" u2="ë" k="41" /> +<hkern u1="r" u2="ê" k="41" /> +<hkern u1="r" u2="é" k="41" /> +<hkern u1="r" u2="è" k="41" /> +<hkern u1="r" u2="ç" k="41" /> +<hkern u1="r" u2="æ" k="41" /> +<hkern u1="r" u2="å" k="41" /> +<hkern u1="r" u2="ä" k="41" /> +<hkern u1="r" u2="ã" k="41" /> +<hkern u1="r" u2="â" k="41" /> +<hkern u1="r" u2="á" k="41" /> +<hkern u1="r" u2="à" k="41" /> +<hkern u1="r" u2="q" k="41" /> +<hkern u1="r" u2="o" k="41" /> +<hkern u1="r" u2="g" k="20" /> +<hkern u1="r" u2="e" k="41" /> +<hkern u1="r" u2="d" k="41" /> +<hkern u1="r" u2="c" k="41" /> +<hkern u1="r" u2="a" k="41" /> +<hkern u1="r" u2="'" k="-82" /> +<hkern u1="r" u2=""" k="-82" /> +<hkern u1="t" u2="”" k="-41" /> +<hkern u1="t" u2="’" k="-41" /> +<hkern u1="t" u2="'" k="-41" /> +<hkern u1="t" u2=""" k="-41" /> +<hkern u1="v" u2="„" k="82" /> +<hkern u1="v" u2="”" k="-82" /> +<hkern u1="v" u2="‚" k="82" /> +<hkern u1="v" u2="’" k="-82" /> +<hkern u1="v" u2="?" k="-41" /> +<hkern u1="v" u2="." k="82" /> +<hkern u1="v" u2="," k="82" /> +<hkern u1="v" u2="'" k="-82" /> +<hkern u1="v" u2=""" k="-82" /> +<hkern u1="w" u2="„" k="82" /> +<hkern u1="w" u2="”" k="-82" /> +<hkern u1="w" u2="‚" k="82" /> +<hkern u1="w" u2="’" k="-82" /> +<hkern u1="w" u2="?" k="-41" /> +<hkern u1="w" u2="." k="82" /> +<hkern u1="w" u2="," k="82" /> +<hkern u1="w" u2="'" k="-82" /> +<hkern u1="w" u2=""" k="-82" /> +<hkern u1="x" u2="œ" k="41" /> +<hkern u1="x" u2="ø" k="41" /> +<hkern u1="x" u2="ö" k="41" /> +<hkern u1="x" u2="õ" k="41" /> +<hkern u1="x" u2="ô" k="41" /> +<hkern u1="x" u2="ó" k="41" /> +<hkern u1="x" u2="ò" k="41" /> +<hkern u1="x" u2="ë" k="41" /> +<hkern u1="x" u2="ê" k="41" /> +<hkern u1="x" u2="é" k="41" /> +<hkern u1="x" u2="è" k="41" /> +<hkern u1="x" u2="ç" k="41" /> +<hkern u1="x" u2="à" k="41" /> +<hkern u1="x" u2="q" k="41" /> +<hkern u1="x" u2="o" k="41" /> +<hkern u1="x" u2="e" k="41" /> +<hkern u1="x" u2="d" k="41" /> +<hkern u1="x" u2="c" k="41" /> +<hkern u1="y" u2="„" k="82" /> +<hkern u1="y" u2="”" k="-82" /> +<hkern u1="y" u2="‚" k="82" /> +<hkern u1="y" u2="’" k="-82" /> +<hkern u1="y" u2="?" k="-41" /> +<hkern u1="y" u2="." k="82" /> +<hkern u1="y" u2="," k="82" /> +<hkern u1="y" u2="'" k="-82" /> +<hkern u1="y" u2=""" k="-82" /> +<hkern u1="{" u2="J" k="-184" /> +<hkern u1="À" u2="”" k="143" /> +<hkern u1="À" u2="’" k="143" /> +<hkern u1="À" u2="Ÿ" k="123" /> +<hkern u1="À" u2="Œ" k="41" /> +<hkern u1="À" u2="Ý" k="123" /> +<hkern u1="À" u2="Ø" k="41" /> +<hkern u1="À" u2="Ö" k="41" /> +<hkern u1="À" u2="Õ" k="41" /> +<hkern u1="À" u2="Ô" k="41" /> +<hkern u1="À" u2="Ó" k="41" /> +<hkern u1="À" u2="Ò" k="41" /> +<hkern u1="À" u2="Ç" k="41" /> +<hkern u1="À" u2="Y" k="123" /> +<hkern u1="À" u2="W" k="82" /> +<hkern u1="À" u2="V" k="82" /> +<hkern u1="À" u2="T" k="143" /> +<hkern u1="À" u2="Q" k="41" /> +<hkern u1="À" u2="O" k="41" /> +<hkern u1="À" u2="J" k="-266" /> +<hkern u1="À" u2="G" k="41" /> +<hkern u1="À" u2="C" k="41" /> +<hkern u1="À" u2="'" k="143" /> +<hkern u1="À" u2=""" k="143" /> +<hkern u1="Á" u2="”" k="143" /> +<hkern u1="Á" u2="’" k="143" /> +<hkern u1="Á" u2="Ÿ" k="123" /> +<hkern u1="Á" u2="Œ" k="41" /> +<hkern u1="Á" u2="Ý" k="123" /> +<hkern u1="Á" u2="Ø" k="41" /> +<hkern u1="Á" u2="Ö" k="41" /> +<hkern u1="Á" u2="Õ" k="41" /> +<hkern u1="Á" u2="Ô" k="41" /> +<hkern u1="Á" u2="Ó" k="41" /> +<hkern u1="Á" u2="Ò" k="41" /> +<hkern u1="Á" u2="Ç" k="41" /> +<hkern u1="Á" u2="Y" k="123" /> +<hkern u1="Á" u2="W" k="82" /> +<hkern u1="Á" u2="V" k="82" /> +<hkern u1="Á" u2="T" k="143" /> +<hkern u1="Á" u2="Q" k="41" /> +<hkern u1="Á" u2="O" k="41" /> +<hkern u1="Á" u2="J" k="-266" /> +<hkern u1="Á" u2="G" k="41" /> +<hkern u1="Á" u2="C" k="41" /> +<hkern u1="Á" u2="'" k="143" /> +<hkern u1="Á" u2=""" k="143" /> +<hkern u1="Â" u2="”" k="143" /> +<hkern u1="Â" u2="’" k="143" /> +<hkern u1="Â" u2="Ÿ" k="123" /> +<hkern u1="Â" u2="Œ" k="41" /> +<hkern u1="Â" u2="Ý" k="123" /> +<hkern u1="Â" u2="Ø" k="41" /> +<hkern u1="Â" u2="Ö" k="41" /> +<hkern u1="Â" u2="Õ" k="41" /> +<hkern u1="Â" u2="Ô" k="41" /> +<hkern u1="Â" u2="Ó" k="41" /> +<hkern u1="Â" u2="Ò" k="41" /> +<hkern u1="Â" u2="Ç" k="41" /> +<hkern u1="Â" u2="Y" k="123" /> +<hkern u1="Â" u2="W" k="82" /> +<hkern u1="Â" u2="V" k="82" /> +<hkern u1="Â" u2="T" k="143" /> +<hkern u1="Â" u2="Q" k="41" /> +<hkern u1="Â" u2="O" k="41" /> +<hkern u1="Â" u2="J" k="-266" /> +<hkern u1="Â" u2="G" k="41" /> +<hkern u1="Â" u2="C" k="41" /> +<hkern u1="Â" u2="'" k="143" /> +<hkern u1="Â" u2=""" k="143" /> +<hkern u1="Ã" u2="”" k="143" /> +<hkern u1="Ã" u2="’" k="143" /> +<hkern u1="Ã" u2="Ÿ" k="123" /> +<hkern u1="Ã" u2="Œ" k="41" /> +<hkern u1="Ã" u2="Ý" k="123" /> +<hkern u1="Ã" u2="Ø" k="41" /> +<hkern u1="Ã" u2="Ö" k="41" /> +<hkern u1="Ã" u2="Õ" k="41" /> +<hkern u1="Ã" u2="Ô" k="41" /> +<hkern u1="Ã" u2="Ó" k="41" /> +<hkern u1="Ã" u2="Ò" k="41" /> +<hkern u1="Ã" u2="Ç" k="41" /> +<hkern u1="Ã" u2="Y" k="123" /> +<hkern u1="Ã" u2="W" k="82" /> +<hkern u1="Ã" u2="V" k="82" /> +<hkern u1="Ã" u2="T" k="143" /> +<hkern u1="Ã" u2="Q" k="41" /> +<hkern u1="Ã" u2="O" k="41" /> +<hkern u1="Ã" u2="J" k="-266" /> +<hkern u1="Ã" u2="G" k="41" /> +<hkern u1="Ã" u2="C" k="41" /> +<hkern u1="Ã" u2="'" k="143" /> +<hkern u1="Ã" u2=""" k="143" /> +<hkern u1="Ä" u2="”" k="143" /> +<hkern u1="Ä" u2="’" k="143" /> +<hkern u1="Ä" u2="Ÿ" k="123" /> +<hkern u1="Ä" u2="Œ" k="41" /> +<hkern u1="Ä" u2="Ý" k="123" /> +<hkern u1="Ä" u2="Ø" k="41" /> +<hkern u1="Ä" u2="Ö" k="41" /> +<hkern u1="Ä" u2="Õ" k="41" /> +<hkern u1="Ä" u2="Ô" k="41" /> +<hkern u1="Ä" u2="Ó" k="41" /> +<hkern u1="Ä" u2="Ò" k="41" /> +<hkern u1="Ä" u2="Ç" k="41" /> +<hkern u1="Ä" u2="Y" k="123" /> +<hkern u1="Ä" u2="W" k="82" /> +<hkern u1="Ä" u2="V" k="82" /> +<hkern u1="Ä" u2="T" k="143" /> +<hkern u1="Ä" u2="Q" k="41" /> +<hkern u1="Ä" u2="O" k="41" /> +<hkern u1="Ä" u2="J" k="-266" /> +<hkern u1="Ä" u2="G" k="41" /> +<hkern u1="Ä" u2="C" k="41" /> +<hkern u1="Ä" u2="'" k="143" /> +<hkern u1="Ä" u2=""" k="143" /> +<hkern u1="Å" u2="”" k="143" /> +<hkern u1="Å" u2="’" k="143" /> +<hkern u1="Å" u2="Ÿ" k="123" /> +<hkern u1="Å" u2="Œ" k="41" /> +<hkern u1="Å" u2="Ý" k="123" /> +<hkern u1="Å" u2="Ø" k="41" /> +<hkern u1="Å" u2="Ö" k="41" /> +<hkern u1="Å" u2="Õ" k="41" /> +<hkern u1="Å" u2="Ô" k="41" /> +<hkern u1="Å" u2="Ó" k="41" /> +<hkern u1="Å" u2="Ò" k="41" /> +<hkern u1="Å" u2="Ç" k="41" /> +<hkern u1="Å" u2="Y" k="123" /> +<hkern u1="Å" u2="W" k="82" /> +<hkern u1="Å" u2="V" k="82" /> +<hkern u1="Å" u2="T" k="143" /> +<hkern u1="Å" u2="Q" k="41" /> +<hkern u1="Å" u2="O" k="41" /> +<hkern u1="Å" u2="J" k="-266" /> +<hkern u1="Å" u2="G" k="41" /> +<hkern u1="Å" u2="C" k="41" /> +<hkern u1="Å" u2="'" k="143" /> +<hkern u1="Å" u2=""" k="143" /> +<hkern u1="Æ" u2="J" k="-123" /> +<hkern u1="Ç" u2="Œ" k="41" /> +<hkern u1="Ç" u2="Ø" k="41" /> +<hkern u1="Ç" u2="Ö" k="41" /> +<hkern u1="Ç" u2="Õ" k="41" /> +<hkern u1="Ç" u2="Ô" k="41" /> +<hkern u1="Ç" u2="Ó" k="41" /> +<hkern u1="Ç" u2="Ò" k="41" /> +<hkern u1="Ç" u2="Ç" k="41" /> +<hkern u1="Ç" u2="Q" k="41" /> +<hkern u1="Ç" u2="O" k="41" /> +<hkern u1="Ç" u2="G" k="41" /> +<hkern u1="Ç" u2="C" k="41" /> +<hkern u1="È" u2="J" k="-123" /> +<hkern u1="É" u2="J" k="-123" /> +<hkern u1="Ê" u2="J" k="-123" /> +<hkern u1="Ë" u2="J" k="-123" /> +<hkern u1="Ð" u2="„" k="82" /> +<hkern u1="Ð" u2="‚" k="82" /> +<hkern u1="Ð" u2="Ÿ" k="20" /> +<hkern u1="Ð" u2="Ý" k="20" /> +<hkern u1="Ð" u2="Å" k="41" /> +<hkern u1="Ð" u2="Ä" k="41" /> +<hkern u1="Ð" u2="Ã" k="41" /> +<hkern u1="Ð" u2="Â" k="41" /> +<hkern u1="Ð" u2="Á" k="41" /> +<hkern u1="Ð" u2="À" k="41" /> +<hkern u1="Ð" u2="Z" k="20" /> +<hkern u1="Ð" u2="Y" k="20" /> +<hkern u1="Ð" u2="X" k="41" /> +<hkern u1="Ð" u2="W" k="20" /> +<hkern u1="Ð" u2="V" k="20" /> +<hkern u1="Ð" u2="T" k="61" /> +<hkern u1="Ð" u2="A" k="41" /> +<hkern u1="Ð" u2="." k="82" /> +<hkern u1="Ð" u2="," k="82" /> +<hkern u1="Ò" u2="„" k="82" /> +<hkern u1="Ò" u2="‚" k="82" /> +<hkern u1="Ò" u2="Ÿ" k="20" /> +<hkern u1="Ò" u2="Ý" k="20" /> +<hkern u1="Ò" u2="Å" k="41" /> +<hkern u1="Ò" u2="Ä" k="41" /> +<hkern u1="Ò" u2="Ã" k="41" /> +<hkern u1="Ò" u2="Â" k="41" /> +<hkern u1="Ò" u2="Á" k="41" /> +<hkern u1="Ò" u2="À" k="41" /> +<hkern u1="Ò" u2="Z" k="20" /> +<hkern u1="Ò" u2="Y" k="20" /> +<hkern u1="Ò" u2="X" k="41" /> +<hkern u1="Ò" u2="W" k="20" /> +<hkern u1="Ò" u2="V" k="20" /> +<hkern u1="Ò" u2="T" k="61" /> +<hkern u1="Ò" u2="A" k="41" /> +<hkern u1="Ò" u2="." k="82" /> +<hkern u1="Ò" u2="," k="82" /> +<hkern u1="Ó" u2="„" k="82" /> +<hkern u1="Ó" u2="‚" k="82" /> +<hkern u1="Ó" u2="Ÿ" k="20" /> +<hkern u1="Ó" u2="Ý" k="20" /> +<hkern u1="Ó" u2="Å" k="41" /> +<hkern u1="Ó" u2="Ä" k="41" /> +<hkern u1="Ó" u2="Ã" k="41" /> +<hkern u1="Ó" u2="Â" k="41" /> +<hkern u1="Ó" u2="Á" k="41" /> +<hkern u1="Ó" u2="À" k="41" /> +<hkern u1="Ó" u2="Z" k="20" /> +<hkern u1="Ó" u2="Y" k="20" /> +<hkern u1="Ó" u2="X" k="41" /> +<hkern u1="Ó" u2="W" k="20" /> +<hkern u1="Ó" u2="V" k="20" /> +<hkern u1="Ó" u2="T" k="61" /> +<hkern u1="Ó" u2="A" k="41" /> +<hkern u1="Ó" u2="." k="82" /> +<hkern u1="Ó" u2="," k="82" /> +<hkern u1="Ô" u2="„" k="82" /> +<hkern u1="Ô" u2="‚" k="82" /> +<hkern u1="Ô" u2="Ÿ" k="20" /> +<hkern u1="Ô" u2="Ý" k="20" /> +<hkern u1="Ô" u2="Å" k="41" /> +<hkern u1="Ô" u2="Ä" k="41" /> +<hkern u1="Ô" u2="Ã" k="41" /> +<hkern u1="Ô" u2="Â" k="41" /> +<hkern u1="Ô" u2="Á" k="41" /> +<hkern u1="Ô" u2="À" k="41" /> +<hkern u1="Ô" u2="Z" k="20" /> +<hkern u1="Ô" u2="Y" k="20" /> +<hkern u1="Ô" u2="X" k="41" /> +<hkern u1="Ô" u2="W" k="20" /> +<hkern u1="Ô" u2="V" k="20" /> +<hkern u1="Ô" u2="T" k="61" /> +<hkern u1="Ô" u2="A" k="41" /> +<hkern u1="Ô" u2="." k="82" /> +<hkern u1="Ô" u2="," k="82" /> +<hkern u1="Õ" u2="„" k="82" /> +<hkern u1="Õ" u2="‚" k="82" /> +<hkern u1="Õ" u2="Ÿ" k="20" /> +<hkern u1="Õ" u2="Ý" k="20" /> +<hkern u1="Õ" u2="Å" k="41" /> +<hkern u1="Õ" u2="Ä" k="41" /> +<hkern u1="Õ" u2="Ã" k="41" /> +<hkern u1="Õ" u2="Â" k="41" /> +<hkern u1="Õ" u2="Á" k="41" /> +<hkern u1="Õ" u2="À" k="41" /> +<hkern u1="Õ" u2="Z" k="20" /> +<hkern u1="Õ" u2="Y" k="20" /> +<hkern u1="Õ" u2="X" k="41" /> +<hkern u1="Õ" u2="W" k="20" /> +<hkern u1="Õ" u2="V" k="20" /> +<hkern u1="Õ" u2="T" k="61" /> +<hkern u1="Õ" u2="A" k="41" /> +<hkern u1="Õ" u2="." k="82" /> +<hkern u1="Õ" u2="," k="82" /> +<hkern u1="Ö" u2="„" k="82" /> +<hkern u1="Ö" u2="‚" k="82" /> +<hkern u1="Ö" u2="Ÿ" k="20" /> +<hkern u1="Ö" u2="Ý" k="20" /> +<hkern u1="Ö" u2="Å" k="41" /> +<hkern u1="Ö" u2="Ä" k="41" /> +<hkern u1="Ö" u2="Ã" k="41" /> +<hkern u1="Ö" u2="Â" k="41" /> +<hkern u1="Ö" u2="Á" k="41" /> +<hkern u1="Ö" u2="À" k="41" /> +<hkern u1="Ö" u2="Z" k="20" /> +<hkern u1="Ö" u2="Y" k="20" /> +<hkern u1="Ö" u2="X" k="41" /> +<hkern u1="Ö" u2="W" k="20" /> +<hkern u1="Ö" u2="V" k="20" /> +<hkern u1="Ö" u2="T" k="61" /> +<hkern u1="Ö" u2="A" k="41" /> +<hkern u1="Ö" u2="." k="82" /> +<hkern u1="Ö" u2="," k="82" /> +<hkern u1="Ø" u2="„" k="82" /> +<hkern u1="Ø" u2="‚" k="82" /> +<hkern u1="Ø" u2="Ÿ" k="20" /> +<hkern u1="Ø" u2="Ý" k="20" /> +<hkern u1="Ø" u2="Å" k="41" /> +<hkern u1="Ø" u2="Ä" k="41" /> +<hkern u1="Ø" u2="Ã" k="41" /> +<hkern u1="Ø" u2="Â" k="41" /> +<hkern u1="Ø" u2="Á" k="41" /> +<hkern u1="Ø" u2="À" k="41" /> +<hkern u1="Ø" u2="Z" k="20" /> +<hkern u1="Ø" u2="Y" k="20" /> +<hkern u1="Ø" u2="X" k="41" /> +<hkern u1="Ø" u2="W" k="20" /> +<hkern u1="Ø" u2="V" k="20" /> +<hkern u1="Ø" u2="T" k="61" /> +<hkern u1="Ø" u2="A" k="41" /> +<hkern u1="Ø" u2="." k="82" /> +<hkern u1="Ø" u2="," k="82" /> +<hkern u1="Ù" u2="„" k="41" /> +<hkern u1="Ù" u2="‚" k="41" /> +<hkern u1="Ù" u2="Å" k="20" /> +<hkern u1="Ù" u2="Ä" k="20" /> +<hkern u1="Ù" u2="Ã" k="20" /> +<hkern u1="Ù" u2="Â" k="20" /> +<hkern u1="Ù" u2="Á" k="20" /> +<hkern u1="Ù" u2="À" k="20" /> +<hkern u1="Ù" u2="A" k="20" /> +<hkern u1="Ù" u2="." k="41" /> +<hkern u1="Ù" u2="," k="41" /> +<hkern u1="Ú" u2="„" k="41" /> +<hkern u1="Ú" u2="‚" k="41" /> +<hkern u1="Ú" u2="Å" k="20" /> +<hkern u1="Ú" u2="Ä" k="20" /> +<hkern u1="Ú" u2="Ã" k="20" /> +<hkern u1="Ú" u2="Â" k="20" /> +<hkern u1="Ú" u2="Á" k="20" /> +<hkern u1="Ú" u2="À" k="20" /> +<hkern u1="Ú" u2="A" k="20" /> +<hkern u1="Ú" u2="." k="41" /> +<hkern u1="Ú" u2="," k="41" /> +<hkern u1="Û" u2="„" k="41" /> +<hkern u1="Û" u2="‚" k="41" /> +<hkern u1="Û" u2="Å" k="20" /> +<hkern u1="Û" u2="Ä" k="20" /> +<hkern u1="Û" u2="Ã" k="20" /> +<hkern u1="Û" u2="Â" k="20" /> +<hkern u1="Û" u2="Á" k="20" /> +<hkern u1="Û" u2="À" k="20" /> +<hkern u1="Û" u2="A" k="20" /> +<hkern u1="Û" u2="." k="41" /> +<hkern u1="Û" u2="," k="41" /> +<hkern u1="Ü" u2="„" k="41" /> +<hkern u1="Ü" u2="‚" k="41" /> +<hkern u1="Ü" u2="Å" k="20" /> +<hkern u1="Ü" u2="Ä" k="20" /> +<hkern u1="Ü" u2="Ã" k="20" /> +<hkern u1="Ü" u2="Â" k="20" /> +<hkern u1="Ü" u2="Á" k="20" /> +<hkern u1="Ü" u2="À" k="20" /> +<hkern u1="Ü" u2="A" k="20" /> +<hkern u1="Ü" u2="." k="41" /> +<hkern u1="Ü" u2="," k="41" /> +<hkern u1="Ý" u2="„" k="123" /> +<hkern u1="Ý" u2="‚" k="123" /> +<hkern u1="Ý" u2="œ" k="102" /> +<hkern u1="Ý" u2="Œ" k="41" /> +<hkern u1="Ý" u2="ü" k="61" /> +<hkern u1="Ý" u2="û" k="61" /> +<hkern u1="Ý" u2="ú" k="61" /> +<hkern u1="Ý" u2="ù" k="61" /> +<hkern u1="Ý" u2="ø" k="102" /> +<hkern u1="Ý" u2="ö" k="102" /> +<hkern u1="Ý" u2="õ" k="102" /> +<hkern u1="Ý" u2="ô" k="102" /> +<hkern u1="Ý" u2="ó" k="102" /> +<hkern u1="Ý" u2="ò" k="102" /> +<hkern u1="Ý" u2="ë" k="102" /> +<hkern u1="Ý" u2="ê" k="102" /> +<hkern u1="Ý" u2="é" k="102" /> +<hkern u1="Ý" u2="è" k="102" /> +<hkern u1="Ý" u2="ç" k="102" /> +<hkern u1="Ý" u2="æ" k="102" /> +<hkern u1="Ý" u2="å" k="102" /> +<hkern u1="Ý" u2="ä" k="102" /> +<hkern u1="Ý" u2="ã" k="102" /> +<hkern u1="Ý" u2="â" k="102" /> +<hkern u1="Ý" u2="á" k="102" /> +<hkern u1="Ý" u2="à" k="102" /> +<hkern u1="Ý" u2="Ø" k="41" /> +<hkern u1="Ý" u2="Ö" k="41" /> +<hkern u1="Ý" u2="Õ" k="41" /> +<hkern u1="Ý" u2="Ô" k="41" /> +<hkern u1="Ý" u2="Ó" k="41" /> +<hkern u1="Ý" u2="Ò" k="41" /> +<hkern u1="Ý" u2="Ç" k="41" /> +<hkern u1="Ý" u2="Å" k="123" /> +<hkern u1="Ý" u2="Ä" k="123" /> +<hkern u1="Ý" u2="Ã" k="123" /> +<hkern u1="Ý" u2="Â" k="123" /> +<hkern u1="Ý" u2="Á" k="123" /> +<hkern u1="Ý" u2="À" k="123" /> +<hkern u1="Ý" u2="z" k="41" /> +<hkern u1="Ý" u2="u" k="61" /> +<hkern u1="Ý" u2="s" k="82" /> +<hkern u1="Ý" u2="r" k="61" /> +<hkern u1="Ý" u2="q" k="102" /> +<hkern u1="Ý" u2="p" k="61" /> +<hkern u1="Ý" u2="o" k="102" /> +<hkern u1="Ý" u2="n" k="61" /> +<hkern u1="Ý" u2="m" k="61" /> +<hkern u1="Ý" u2="g" k="41" /> +<hkern u1="Ý" u2="e" k="102" /> +<hkern u1="Ý" u2="d" k="102" /> +<hkern u1="Ý" u2="c" k="102" /> +<hkern u1="Ý" u2="a" k="102" /> +<hkern u1="Ý" u2="Q" k="41" /> +<hkern u1="Ý" u2="O" k="41" /> +<hkern u1="Ý" u2="G" k="41" /> +<hkern u1="Ý" u2="C" k="41" /> +<hkern u1="Ý" u2="A" k="123" /> +<hkern u1="Ý" u2="?" k="-41" /> +<hkern u1="Ý" u2="." k="123" /> +<hkern u1="Ý" u2="," k="123" /> +<hkern u1="Þ" u2="„" k="266" /> +<hkern u1="Þ" u2="‚" k="266" /> +<hkern u1="Þ" u2="Å" k="102" /> +<hkern u1="Þ" u2="Ä" k="102" /> +<hkern u1="Þ" u2="Ã" k="102" /> +<hkern u1="Þ" u2="Â" k="102" /> +<hkern u1="Þ" u2="Á" k="102" /> +<hkern u1="Þ" u2="À" k="102" /> +<hkern u1="Þ" u2="Z" k="20" /> +<hkern u1="Þ" u2="X" k="41" /> +<hkern u1="Þ" u2="A" k="102" /> +<hkern u1="Þ" u2="." k="266" /> +<hkern u1="Þ" u2="," k="266" /> +<hkern u1="à" u2="”" k="20" /> +<hkern u1="à" u2="’" k="20" /> +<hkern u1="à" u2="'" k="20" /> +<hkern u1="à" u2=""" k="20" /> +<hkern u1="á" u2="”" k="20" /> +<hkern u1="á" u2="’" k="20" /> +<hkern u1="á" u2="'" k="20" /> +<hkern u1="á" u2=""" k="20" /> +<hkern u1="â" u2="”" k="20" /> +<hkern u1="â" u2="’" k="20" /> +<hkern u1="â" u2="'" k="20" /> +<hkern u1="â" u2=""" k="20" /> +<hkern u1="ã" u2="”" k="20" /> +<hkern u1="ã" u2="’" k="20" /> +<hkern u1="ã" u2="'" k="20" /> +<hkern u1="ã" u2=""" k="20" /> +<hkern u1="ä" u2="”" k="20" /> +<hkern u1="ä" u2="’" k="20" /> +<hkern u1="ä" u2="'" k="20" /> +<hkern u1="ä" u2=""" k="20" /> +<hkern u1="å" u2="”" k="20" /> +<hkern u1="å" u2="’" k="20" /> +<hkern u1="å" u2="'" k="20" /> +<hkern u1="å" u2=""" k="20" /> +<hkern u1="è" u2="”" k="20" /> +<hkern u1="è" u2="’" k="20" /> +<hkern u1="è" u2="ý" k="41" /> +<hkern u1="è" u2="z" k="20" /> +<hkern u1="è" u2="y" k="41" /> +<hkern u1="è" u2="x" k="41" /> +<hkern u1="è" u2="w" k="41" /> +<hkern u1="è" u2="v" k="41" /> +<hkern u1="è" u2="'" k="20" /> +<hkern u1="è" u2=""" k="20" /> +<hkern u1="é" u2="”" k="20" /> +<hkern u1="é" u2="’" k="20" /> +<hkern u1="é" u2="ý" k="41" /> +<hkern u1="é" u2="z" k="20" /> +<hkern u1="é" u2="y" k="41" /> +<hkern u1="é" u2="x" k="41" /> +<hkern u1="é" u2="w" k="41" /> +<hkern u1="é" u2="v" k="41" /> +<hkern u1="é" u2="'" k="20" /> +<hkern u1="é" u2=""" k="20" /> +<hkern u1="ê" u2="”" k="20" /> +<hkern u1="ê" u2="’" k="20" /> +<hkern u1="ê" u2="ý" k="41" /> +<hkern u1="ê" u2="z" k="20" /> +<hkern u1="ê" u2="y" k="41" /> +<hkern u1="ê" u2="x" k="41" /> +<hkern u1="ê" u2="w" k="41" /> +<hkern u1="ê" u2="v" k="41" /> +<hkern u1="ê" u2="'" k="20" /> +<hkern u1="ê" u2=""" k="20" /> +<hkern u1="ë" u2="”" k="20" /> +<hkern u1="ë" u2="’" k="20" /> +<hkern u1="ë" u2="ý" k="41" /> +<hkern u1="ë" u2="z" k="20" /> +<hkern u1="ë" u2="y" k="41" /> +<hkern u1="ë" u2="x" k="41" /> +<hkern u1="ë" u2="w" k="41" /> +<hkern u1="ë" u2="v" k="41" /> +<hkern u1="ë" u2="'" k="20" /> +<hkern u1="ë" u2=""" k="20" /> +<hkern u1="ð" u2="”" k="20" /> +<hkern u1="ð" u2="’" k="20" /> +<hkern u1="ð" u2="ý" k="41" /> +<hkern u1="ð" u2="z" k="20" /> +<hkern u1="ð" u2="y" k="41" /> +<hkern u1="ð" u2="x" k="41" /> +<hkern u1="ð" u2="w" k="41" /> +<hkern u1="ð" u2="v" k="41" /> +<hkern u1="ð" u2="'" k="20" /> +<hkern u1="ð" u2=""" k="20" /> +<hkern u1="ò" u2="”" k="20" /> +<hkern u1="ò" u2="’" k="20" /> +<hkern u1="ò" u2="ý" k="41" /> +<hkern u1="ò" u2="z" k="20" /> +<hkern u1="ò" u2="y" k="41" /> +<hkern u1="ò" u2="x" k="41" /> +<hkern u1="ò" u2="w" k="41" /> +<hkern u1="ò" u2="v" k="41" /> +<hkern u1="ò" u2="'" k="20" /> +<hkern u1="ò" u2=""" k="20" /> +<hkern u1="ó" u2="”" k="20" /> +<hkern u1="ó" u2="’" k="20" /> +<hkern u1="ó" u2="ý" k="41" /> +<hkern u1="ó" u2="z" k="20" /> +<hkern u1="ó" u2="y" k="41" /> +<hkern u1="ó" u2="x" k="41" /> +<hkern u1="ó" u2="w" k="41" /> +<hkern u1="ó" u2="v" k="41" /> +<hkern u1="ó" u2="'" k="20" /> +<hkern u1="ó" u2=""" k="20" /> +<hkern u1="ô" u2="”" k="20" /> +<hkern u1="ô" u2="’" k="20" /> +<hkern u1="ô" u2="ý" k="41" /> +<hkern u1="ô" u2="z" k="20" /> +<hkern u1="ô" u2="y" k="41" /> +<hkern u1="ô" u2="x" k="41" /> +<hkern u1="ô" u2="w" k="41" /> +<hkern u1="ô" u2="v" k="41" /> +<hkern u1="ô" u2="'" k="20" /> +<hkern u1="ô" u2=""" k="20" /> +<hkern u1="ö" u2="”" k="41" /> +<hkern u1="ö" u2="’" k="41" /> +<hkern u1="ö" u2="'" k="41" /> +<hkern u1="ö" u2=""" k="41" /> +<hkern u1="ø" u2="”" k="20" /> +<hkern u1="ø" u2="’" k="20" /> +<hkern u1="ø" u2="ý" k="41" /> +<hkern u1="ø" u2="z" k="20" /> +<hkern u1="ø" u2="y" k="41" /> +<hkern u1="ø" u2="x" k="41" /> +<hkern u1="ø" u2="w" k="41" /> +<hkern u1="ø" u2="v" k="41" /> +<hkern u1="ø" u2="'" k="20" /> +<hkern u1="ø" u2=""" k="20" /> +<hkern u1="ý" u2="„" k="82" /> +<hkern u1="ý" u2="”" k="-82" /> +<hkern u1="ý" u2="‚" k="82" /> +<hkern u1="ý" u2="’" k="-82" /> +<hkern u1="ý" u2="?" k="-41" /> +<hkern u1="ý" u2="." k="82" /> +<hkern u1="ý" u2="," k="82" /> +<hkern u1="ý" u2="'" k="-82" /> +<hkern u1="ý" u2=""" k="-82" /> +<hkern u1="þ" u2="”" k="20" /> +<hkern u1="þ" u2="’" k="20" /> +<hkern u1="þ" u2="ý" k="41" /> +<hkern u1="þ" u2="z" k="20" /> +<hkern u1="þ" u2="y" k="41" /> +<hkern u1="þ" u2="x" k="41" /> +<hkern u1="þ" u2="w" k="41" /> +<hkern u1="þ" u2="v" k="41" /> +<hkern u1="þ" u2="'" k="20" /> +<hkern u1="þ" u2=""" k="20" /> +<hkern u1="ÿ" u2="„" k="82" /> +<hkern u1="ÿ" u2="”" k="-82" /> +<hkern u1="ÿ" u2="‚" k="82" /> +<hkern u1="ÿ" u2="’" k="-82" /> +<hkern u1="ÿ" u2="?" k="-41" /> +<hkern u1="ÿ" u2="." k="82" /> +<hkern u1="ÿ" u2="," k="82" /> +<hkern u1="ÿ" u2="'" k="-82" /> +<hkern u1="ÿ" u2=""" k="-82" /> +<hkern u1="Œ" u2="J" k="-123" /> +<hkern u1="Ÿ" u2="„" k="123" /> +<hkern u1="Ÿ" u2="‚" k="123" /> +<hkern u1="Ÿ" u2="œ" k="102" /> +<hkern u1="Ÿ" u2="Œ" k="41" /> +<hkern u1="Ÿ" u2="ü" k="61" /> +<hkern u1="Ÿ" u2="û" k="61" /> +<hkern u1="Ÿ" u2="ú" k="61" /> +<hkern u1="Ÿ" u2="ù" k="61" /> +<hkern u1="Ÿ" u2="ø" k="102" /> +<hkern u1="Ÿ" u2="ö" k="102" /> +<hkern u1="Ÿ" u2="õ" k="102" /> +<hkern u1="Ÿ" u2="ô" k="102" /> +<hkern u1="Ÿ" u2="ó" k="102" /> +<hkern u1="Ÿ" u2="ò" k="102" /> +<hkern u1="Ÿ" u2="ë" k="102" /> +<hkern u1="Ÿ" u2="ê" k="102" /> +<hkern u1="Ÿ" u2="é" k="102" /> +<hkern u1="Ÿ" u2="è" k="102" /> +<hkern u1="Ÿ" u2="ç" k="102" /> +<hkern u1="Ÿ" u2="æ" k="102" /> +<hkern u1="Ÿ" u2="å" k="102" /> +<hkern u1="Ÿ" u2="ä" k="102" /> +<hkern u1="Ÿ" u2="ã" k="102" /> +<hkern u1="Ÿ" u2="â" k="102" /> +<hkern u1="Ÿ" u2="á" k="102" /> +<hkern u1="Ÿ" u2="à" k="102" /> +<hkern u1="Ÿ" u2="Ø" k="41" /> +<hkern u1="Ÿ" u2="Ö" k="41" /> +<hkern u1="Ÿ" u2="Õ" k="41" /> +<hkern u1="Ÿ" u2="Ô" k="41" /> +<hkern u1="Ÿ" u2="Ó" k="41" /> +<hkern u1="Ÿ" u2="Ò" k="41" /> +<hkern u1="Ÿ" u2="Ç" k="41" /> +<hkern u1="Ÿ" u2="Å" k="123" /> +<hkern u1="Ÿ" u2="Ä" k="123" /> +<hkern u1="Ÿ" u2="Ã" k="123" /> +<hkern u1="Ÿ" u2="Â" k="123" /> +<hkern u1="Ÿ" u2="Á" k="123" /> +<hkern u1="Ÿ" u2="À" k="123" /> +<hkern u1="Ÿ" u2="z" k="41" /> +<hkern u1="Ÿ" u2="u" k="61" /> +<hkern u1="Ÿ" u2="s" k="82" /> +<hkern u1="Ÿ" u2="r" k="61" /> +<hkern u1="Ÿ" u2="q" k="102" /> +<hkern u1="Ÿ" u2="p" k="61" /> +<hkern u1="Ÿ" u2="o" k="102" /> +<hkern u1="Ÿ" u2="n" k="61" /> +<hkern u1="Ÿ" u2="m" k="61" /> +<hkern u1="Ÿ" u2="g" k="41" /> +<hkern u1="Ÿ" u2="e" k="102" /> +<hkern u1="Ÿ" u2="d" k="102" /> +<hkern u1="Ÿ" u2="c" k="102" /> +<hkern u1="Ÿ" u2="a" k="102" /> +<hkern u1="Ÿ" u2="Q" k="41" /> +<hkern u1="Ÿ" u2="O" k="41" /> +<hkern u1="Ÿ" u2="G" k="41" /> +<hkern u1="Ÿ" u2="C" k="41" /> +<hkern u1="Ÿ" u2="A" k="123" /> +<hkern u1="Ÿ" u2="?" k="-41" /> +<hkern u1="Ÿ" u2="." k="123" /> +<hkern u1="Ÿ" u2="," k="123" /> +<hkern u1="–" u2="T" k="82" /> +<hkern u1="—" u2="T" k="82" /> +<hkern u1="‘" u2="Ÿ" k="-20" /> +<hkern u1="‘" u2="œ" k="123" /> +<hkern u1="‘" u2="ü" k="61" /> +<hkern u1="‘" u2="û" k="61" /> +<hkern u1="‘" u2="ú" k="61" /> +<hkern u1="‘" u2="ù" k="61" /> +<hkern u1="‘" u2="ø" k="123" /> +<hkern u1="‘" u2="ö" k="123" /> +<hkern u1="‘" u2="õ" k="123" /> +<hkern u1="‘" u2="ô" k="123" /> +<hkern u1="‘" u2="ó" k="123" /> +<hkern u1="‘" u2="ò" k="123" /> +<hkern u1="‘" u2="ë" k="123" /> +<hkern u1="‘" u2="ê" k="123" /> +<hkern u1="‘" u2="é" k="123" /> +<hkern u1="‘" u2="è" k="123" /> +<hkern u1="‘" u2="ç" k="123" /> +<hkern u1="‘" u2="æ" k="82" /> +<hkern u1="‘" u2="å" k="82" /> +<hkern u1="‘" u2="ä" k="82" /> +<hkern u1="‘" u2="ã" k="82" /> +<hkern u1="‘" u2="â" k="82" /> +<hkern u1="‘" u2="á" k="82" /> +<hkern u1="‘" u2="à" k="123" /> +<hkern u1="‘" u2="Ý" k="-20" /> +<hkern u1="‘" u2="Å" k="143" /> +<hkern u1="‘" u2="Ä" k="143" /> +<hkern u1="‘" u2="Ã" k="143" /> +<hkern u1="‘" u2="Â" k="143" /> +<hkern u1="‘" u2="Á" k="143" /> +<hkern u1="‘" u2="À" k="143" /> +<hkern u1="‘" u2="u" k="61" /> +<hkern u1="‘" u2="s" k="61" /> +<hkern u1="‘" u2="r" k="61" /> +<hkern u1="‘" u2="q" k="123" /> +<hkern u1="‘" u2="p" k="61" /> +<hkern u1="‘" u2="o" k="123" /> +<hkern u1="‘" u2="n" k="61" /> +<hkern u1="‘" u2="m" k="61" /> +<hkern u1="‘" u2="g" k="61" /> +<hkern u1="‘" u2="e" k="123" /> +<hkern u1="‘" u2="d" k="123" /> +<hkern u1="‘" u2="c" k="123" /> +<hkern u1="‘" u2="a" k="82" /> +<hkern u1="‘" u2="Y" k="-20" /> +<hkern u1="‘" u2="W" k="-41" /> +<hkern u1="‘" u2="V" k="-41" /> +<hkern u1="‘" u2="T" k="-41" /> +<hkern u1="‘" u2="A" k="143" /> +<hkern u1="’" u2="Ÿ" k="-20" /> +<hkern u1="’" u2="œ" k="123" /> +<hkern u1="’" u2="ü" k="61" /> +<hkern u1="’" u2="û" k="61" /> +<hkern u1="’" u2="ú" k="61" /> +<hkern u1="’" u2="ù" k="61" /> +<hkern u1="’" u2="ø" k="123" /> +<hkern u1="’" u2="ö" k="123" /> +<hkern u1="’" u2="õ" k="123" /> +<hkern u1="’" u2="ô" k="123" /> +<hkern u1="’" u2="ó" k="123" /> +<hkern u1="’" u2="ò" k="123" /> +<hkern u1="’" u2="ë" k="123" /> +<hkern u1="’" u2="ê" k="123" /> +<hkern u1="’" u2="é" k="123" /> +<hkern u1="’" u2="è" k="123" /> +<hkern u1="’" u2="ç" k="123" /> +<hkern u1="’" u2="æ" k="82" /> +<hkern u1="’" u2="å" k="82" /> +<hkern u1="’" u2="ä" k="82" /> +<hkern u1="’" u2="ã" k="82" /> +<hkern u1="’" u2="â" k="82" /> +<hkern u1="’" u2="á" k="82" /> +<hkern u1="’" u2="à" k="123" /> +<hkern u1="’" u2="Ý" k="-20" /> +<hkern u1="’" u2="Å" k="143" /> +<hkern u1="’" u2="Ä" k="143" /> +<hkern u1="’" u2="Ã" k="143" /> +<hkern u1="’" u2="Â" k="143" /> +<hkern u1="’" u2="Á" k="143" /> +<hkern u1="’" u2="À" k="143" /> +<hkern u1="’" u2="u" k="61" /> +<hkern u1="’" u2="s" k="61" /> +<hkern u1="’" u2="r" k="61" /> +<hkern u1="’" u2="q" k="123" /> +<hkern u1="’" u2="p" k="61" /> +<hkern u1="’" u2="o" k="123" /> +<hkern u1="’" u2="n" k="61" /> +<hkern u1="’" u2="m" k="61" /> +<hkern u1="’" u2="g" k="61" /> +<hkern u1="’" u2="e" k="123" /> +<hkern u1="’" u2="d" k="123" /> +<hkern u1="’" u2="c" k="123" /> +<hkern u1="’" u2="a" k="82" /> +<hkern u1="’" u2="Y" k="-20" /> +<hkern u1="’" u2="W" k="-41" /> +<hkern u1="’" u2="V" k="-41" /> +<hkern u1="’" u2="T" k="-41" /> +<hkern u1="’" u2="A" k="143" /> +<hkern u1="‚" u2="Ÿ" k="123" /> +<hkern u1="‚" u2="Œ" k="102" /> +<hkern u1="‚" u2="Ý" k="123" /> +<hkern u1="‚" u2="Ü" k="41" /> +<hkern u1="‚" u2="Û" k="41" /> +<hkern u1="‚" u2="Ú" k="41" /> +<hkern u1="‚" u2="Ù" k="41" /> +<hkern u1="‚" u2="Ø" k="102" /> +<hkern u1="‚" u2="Ö" k="102" /> +<hkern u1="‚" u2="Õ" k="102" /> +<hkern u1="‚" u2="Ô" k="102" /> +<hkern u1="‚" u2="Ó" k="102" /> +<hkern u1="‚" u2="Ò" k="102" /> +<hkern u1="‚" u2="Ç" k="102" /> +<hkern u1="‚" u2="Y" k="123" /> +<hkern u1="‚" u2="W" k="123" /> +<hkern u1="‚" u2="V" k="123" /> +<hkern u1="‚" u2="U" k="41" /> +<hkern u1="‚" u2="T" k="143" /> +<hkern u1="‚" u2="Q" k="102" /> +<hkern u1="‚" u2="O" k="102" /> +<hkern u1="‚" u2="G" k="102" /> +<hkern u1="‚" u2="C" k="102" /> +<hkern u1="“" u2="Ÿ" k="-20" /> +<hkern u1="“" u2="œ" k="123" /> +<hkern u1="“" u2="ü" k="61" /> +<hkern u1="“" u2="û" k="61" /> +<hkern u1="“" u2="ú" k="61" /> +<hkern u1="“" u2="ù" k="61" /> +<hkern u1="“" u2="ø" k="123" /> +<hkern u1="“" u2="ö" k="123" /> +<hkern u1="“" u2="õ" k="123" /> +<hkern u1="“" u2="ô" k="123" /> +<hkern u1="“" u2="ó" k="123" /> +<hkern u1="“" u2="ò" k="123" /> +<hkern u1="“" u2="ë" k="123" /> +<hkern u1="“" u2="ê" k="123" /> +<hkern u1="“" u2="é" k="123" /> +<hkern u1="“" u2="è" k="123" /> +<hkern u1="“" u2="ç" k="123" /> +<hkern u1="“" u2="æ" k="82" /> +<hkern u1="“" u2="å" k="82" /> +<hkern u1="“" u2="ä" k="82" /> +<hkern u1="“" u2="ã" k="82" /> +<hkern u1="“" u2="â" k="82" /> +<hkern u1="“" u2="á" k="82" /> +<hkern u1="“" u2="à" k="123" /> +<hkern u1="“" u2="Ý" k="-20" /> +<hkern u1="“" u2="Å" k="143" /> +<hkern u1="“" u2="Ä" k="143" /> +<hkern u1="“" u2="Ã" k="143" /> +<hkern u1="“" u2="Â" k="143" /> +<hkern u1="“" u2="Á" k="143" /> +<hkern u1="“" u2="À" k="143" /> +<hkern u1="“" u2="u" k="61" /> +<hkern u1="“" u2="s" k="61" /> +<hkern u1="“" u2="r" k="61" /> +<hkern u1="“" u2="q" k="123" /> +<hkern u1="“" u2="p" k="61" /> +<hkern u1="“" u2="o" k="123" /> +<hkern u1="“" u2="n" k="61" /> +<hkern u1="“" u2="m" k="61" /> +<hkern u1="“" u2="g" k="61" /> +<hkern u1="“" u2="e" k="123" /> +<hkern u1="“" u2="d" k="123" /> +<hkern u1="“" u2="c" k="123" /> +<hkern u1="“" u2="a" k="82" /> +<hkern u1="“" u2="Y" k="-20" /> +<hkern u1="“" u2="W" k="-41" /> +<hkern u1="“" u2="V" k="-41" /> +<hkern u1="“" u2="T" k="-41" /> +<hkern u1="“" u2="A" k="143" /> +<hkern u1="„" u2="Ÿ" k="123" /> +<hkern u1="„" u2="Œ" k="102" /> +<hkern u1="„" u2="Ý" k="123" /> +<hkern u1="„" u2="Ü" k="41" /> +<hkern u1="„" u2="Û" k="41" /> +<hkern u1="„" u2="Ú" k="41" /> +<hkern u1="„" u2="Ù" k="41" /> +<hkern u1="„" u2="Ø" k="102" /> +<hkern u1="„" u2="Ö" k="102" /> +<hkern u1="„" u2="Õ" k="102" /> +<hkern u1="„" u2="Ô" k="102" /> +<hkern u1="„" u2="Ó" k="102" /> +<hkern u1="„" u2="Ò" k="102" /> +<hkern u1="„" u2="Ç" k="102" /> +<hkern u1="„" u2="Y" k="123" /> +<hkern u1="„" u2="W" k="123" /> +<hkern u1="„" u2="V" k="123" /> +<hkern u1="„" u2="U" k="41" /> +<hkern u1="„" u2="T" k="143" /> +<hkern u1="„" u2="Q" k="102" /> +<hkern u1="„" u2="O" k="102" /> +<hkern u1="„" u2="G" k="102" /> +<hkern u1="„" u2="C" k="102" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.woff b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000..1205787 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Bold-webfont.woff Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.eot b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.eot new file mode 100644 index 0000000..1f639a1 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.eot Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.svg b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.svg new file mode 100644 index 0000000..6a2607b --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.svg @@ -0,0 +1,1830 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="open_sansbold_italic" horiz-adv-x="1128" > +<font-face units-per-em="2048" ascent="1638" descent="-410" /> +<missing-glyph horiz-adv-x="532" /> +<glyph unicode="fi" horiz-adv-x="1352" d="M0 0zM-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z M1065 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123zM1081 0h-301l237 1118h301z" /> +<glyph unicode="fl" horiz-adv-x="1352" d="M0 0zM-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z M1081 0h-301l330 1556h301z" /> +<glyph unicode="ffi" horiz-adv-x="2048" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49 l-79 -224q-69 31 -134 31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 -404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 -1010q-77 -371 -403 -371zM1778 0h-301l237 1118h301zM1761 1380q0 87 48 131.5 t135 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-152 0 -152 123z" /> +<glyph unicode="ffl" horiz-adv-x="2048" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49 l-79 -224q-69 31 -134 31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 -404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 -1010q-77 -371 -403 -371zM1778 0h-301l329 1556h301z" /> +<glyph horiz-adv-x="2048" /> +<glyph horiz-adv-x="2048" /> +<glyph unicode="
" horiz-adv-x="1044" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="	" horiz-adv-x="532" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="!" horiz-adv-x="586" d="M391 485h-241l157 977h340zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" /> +<glyph unicode=""" horiz-adv-x="928" d="M549 1462l-152 -528h-196l71 528h277zM954 1462l-151 -528h-199l74 528h276z" /> +<glyph unicode="#" horiz-adv-x="1323" d="M1036 846l-69 -232h258l-19 -206h-297l-116 -408h-220l117 408h-194l-115 -408h-215l113 408h-238l18 206h277l70 232h-252l18 209h289l119 407h217l-117 -407h199l116 407h215l-116 -407h239l-18 -209h-279zM553 614h197l69 232h-196z" /> +<glyph unicode="$" d="M1034 496q0 -184 -125.5 -291.5t-367.5 -124.5l-39 -199h-140l44 201q-209 12 -355 86v266q198 -107 404 -117l71 322q-163 61 -241 151t-78 214q0 173 127 279.5t350 121.5l35 151h139l-33 -151q166 -22 295 -90l-106 -232q-132 65 -242 74l-63 -299q131 -51 195 -99.5 t97 -113t33 -149.5zM594 322q63 9 102 45t39 98q0 46 -24.5 75.5t-59.5 43.5zM633 1157q-62 -7 -96.5 -41t-34.5 -94q0 -79 80 -111z" /> +<glyph unicode="%" horiz-adv-x="1753" d="M518 1274q-63 0 -110.5 -128.5t-47.5 -277.5q0 -96 56 -96q65 0 112 131t47 275q0 96 -57 96zM821 1165q0 -166 -56 -310t-151 -217t-217 -73q-139 0 -210.5 83.5t-71.5 236.5q0 169 55.5 311.5t148.5 214.5t216 72q137 0 211.5 -80t74.5 -238zM1554 1462l-1083 -1462 h-240l1088 1462h235zM1376 690q-39 0 -75 -56t-59 -154t-23 -195t55 -97q41 0 77 55t59.5 154.5t23.5 196.5q0 96 -58 96zM1679 590q0 -167 -54 -313.5t-148 -220.5t-215 -74q-144 0 -216.5 78.5t-72.5 222.5q0 177 53 322.5t148 219.5t219 74q137 0 211.5 -78.5 t74.5 -230.5z" /> +<glyph unicode="&" horiz-adv-x="1450" d="M1325 0h-350l-72 98q-175 -118 -403 -118q-209 0 -320.5 97.5t-111.5 280.5q0 145 78.5 248.5t273.5 200.5q-76 130 -76 258q0 195 117.5 307.5t316.5 112.5q169 0 266 -82.5t97 -224.5q0 -280 -365 -426l195 -263q44 57 80.5 121.5t78.5 173.5h300q-133 -313 -310 -497z M541 623q-88 -51 -123 -104.5t-35 -131.5q0 -65 45.5 -108t116.5 -43q115 0 221 59zM662 920q113 59 155.5 111t42.5 112q0 57 -30 82.5t-70 25.5q-66 0 -102.5 -46.5t-36.5 -119.5q0 -46 12 -92t29 -73z" /> +<glyph unicode="'" horiz-adv-x="522" d="M549 1462l-152 -528h-196l71 528h277z" /> +<glyph unicode="(" horiz-adv-x="694" d="M74 281q0 339 122.5 626.5t381.5 554.5h262q-255 -278 -377.5 -573.5t-122.5 -618.5q0 -308 117 -594h-234q-149 266 -149 605z" /> +<glyph unicode=")" horiz-adv-x="694" d="M618 858q0 -342 -124 -630.5t-379 -551.5h-262q499 545 499 1192q0 307 -116 594h233q149 -264 149 -604z" /> +<glyph unicode="*" horiz-adv-x="1116" d="M885 1522l-113 -353l387 29l-18 -254l-338 43l160 -336l-246 -73l-90 337l-197 -278l-207 164l275 248l-326 92l86 237l338 -174l33 369z" /> +<glyph unicode="+" d="M475 612h-366v219h366v369h219v-369h367v-219h-367v-364h-219v364z" /> +<glyph unicode="," horiz-adv-x="569" d="M377 238l8 -23q-118 -255 -262 -479h-225q74 167 194 502h285z" /> +<glyph unicode="-" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" /> +<glyph unicode="." horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" /> +<glyph unicode="/" horiz-adv-x="862" d="M1014 1462l-809 -1462h-295l809 1462h295z" /> +<glyph unicode="0" d="M1110 1012q0 -470 -168.5 -751t-472.5 -281q-198 0 -300.5 122t-102.5 365q0 297 84 537t228 360.5t333 120.5q399 0 399 -473zM684 1235q-80 0 -149.5 -104t-117.5 -302t-48 -368q0 -115 27.5 -173.5t97.5 -58.5q81 0 150.5 106t116 301t46.5 386q0 111 -30.5 162 t-92.5 51z" /> +<glyph unicode="1" d="M688 0h-305l180 829q35 152 76 287q-9 -8 -61.5 -47t-262.5 -170l-133 215l566 348h249z" /> +<glyph unicode="2" d="M913 0h-962l43 213l477 424q180 159 248.5 254.5t68.5 179.5q0 75 -41 114.5t-110 39.5q-66 0 -135.5 -33.5t-171.5 -118.5l-146 203q132 112 252 159.5t250 47.5q190 0 301 -98t111 -259q0 -107 -41 -201t-122.5 -188t-266.5 -245l-269 -222v-10h568z" /> +<glyph unicode="3" d="M1104 1149q0 -156 -94.5 -262t-261.5 -135v-4q131 -26 198.5 -106.5t67.5 -201.5q0 -133 -74 -238t-212 -163.5t-327 -58.5q-239 0 -387 79v267q84 -50 182 -75.5t191 -25.5q158 0 243 63.5t85 176.5q0 172 -258 172h-138l46 221h73q167 0 263 62t96 172q0 67 -43 104 t-121 37q-134 0 -287 -100l-127 204q124 81 232.5 113.5t246.5 32.5q190 0 298 -90.5t108 -243.5z" /> +<glyph unicode="4" d="M1028 303h-170l-63 -303h-293l63 303h-590l48 234l770 925h311l-195 -919h170zM616 543l58 248q12 58 40 164t42 141h-6q-35 -63 -132 -181l-313 -372h311z" /> +<glyph unicode="5" d="M623 922q183 0 289 -103t106 -287q0 -167 -71.5 -292t-208.5 -192.5t-330 -67.5q-117 0 -218.5 23t-162.5 58v269q174 -99 352 -99q154 0 241 71t87 194q0 94 -57.5 141t-166.5 47q-102 0 -213 -33l-104 78l207 733h755l-55 -262h-489l-88 -293q72 15 127 15z" /> +<glyph unicode="6" d="M88 469q0 202 61 395.5t167.5 335t256.5 213.5t357 72q125 0 223 -27l-51 -246q-84 25 -191 25q-194 0 -313.5 -108t-185.5 -345h4q115 166 311 166q157 0 242.5 -97t85.5 -273q0 -169 -71 -313.5t-190.5 -215.5t-277.5 -71q-212 0 -320 127t-108 362zM530 227 q99 0 161.5 94t62.5 236q0 71 -33.5 113.5t-102.5 42.5q-60 0 -114.5 -35.5t-87.5 -95.5t-33 -160q0 -91 40 -143t107 -52z" /> +<glyph unicode="7" d="M78 0l737 1202h-629l56 260h975l-41 -194l-752 -1268h-346z" /> +<glyph unicode="8" d="M721 1485q123 0 215.5 -42t141 -118t48.5 -174q0 -134 -80.5 -233.5t-230.5 -151.5q217 -141 217 -365q0 -122 -63.5 -218.5t-181 -149.5t-273.5 -53q-214 0 -336.5 100t-122.5 270q0 298 348 426q-165 132 -165 299q0 119 58 212.5t168 145.5t257 52zM582 643 q-116 -45 -173 -107t-57 -153q0 -81 50 -128.5t135 -47.5q93 0 147.5 53.5t54.5 138.5q0 73 -36.5 131.5t-120.5 112.5zM694 1260q-76 0 -121 -46.5t-45 -119.5q0 -132 123 -201q185 72 185 221q0 68 -39.5 107t-102.5 39z" /> +<glyph unicode="9" d="M1092 1001q0 -280 -99 -533t-264 -370.5t-403 -117.5q-128 0 -240 32v256q111 -41 227 -41q121 0 207.5 49t144 138.5t99.5 257.5h-4q-111 -158 -295 -158q-163 0 -252.5 103.5t-89.5 285.5q0 166 73 305.5t196 208t286 68.5q203 0 308.5 -123t105.5 -361zM645 1237 q-65 0 -115.5 -42t-78 -114t-27.5 -153q0 -87 37.5 -131.5t105.5 -44.5q60 0 111.5 36.5t82 100t30.5 158.5q0 84 -35.5 137t-110.5 53z" /> +<glyph unicode=":" horiz-adv-x="584" d="M207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" /> +<glyph unicode=";" horiz-adv-x="584" d="M385 215q-118 -255 -262 -479h-225q74 167 194 502h285zM207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5z" /> +<glyph unicode="<" d="M1061 203l-952 438v143l952 496v-240l-643 -317l643 -281v-239z" /> +<glyph unicode="=" d="M109 807v217h952v-217h-952zM109 418v219h952v-219h-952z" /> +<glyph unicode=">" d="M109 442l643 281l-643 317v240l952 -496v-143l-952 -438v239z" /> +<glyph unicode="?" horiz-adv-x="940" d="M260 485l14 78q19 103 73.5 177t172.5 155q124 84 157.5 127t33.5 96q0 119 -133 119q-50 0 -106.5 -16t-201.5 -84l-92 221q230 125 445 125q177 0 280 -87.5t103 -244.5q0 -83 -28.5 -149.5t-82.5 -123t-190 -147.5q-64 -43 -96.5 -73t-52.5 -64.5t-38 -108.5h-258z M166 115q0 91 55 144.5t150 53.5q68 0 108.5 -38t40.5 -107q0 -87 -55 -141t-143 -54q-74 0 -115 38t-41 104z" /> +<glyph unicode="@" horiz-adv-x="1753" d="M1733 840q0 -173 -64 -321t-177.5 -231t-254.5 -83q-88 0 -144.5 38.5t-72.5 108.5h-6q-50 -77 -113 -112t-147 -35q-127 0 -198 79.5t-71 229.5q0 147 67.5 276.5t187.5 205t268 75.5q185 0 327 -55l-106 -420q-11 -44 -19 -76.5t-8 -64.5q0 -68 58 -68q66 0 124 64 t92.5 171t34.5 214q0 213 -123.5 325.5t-359.5 112.5q-203 0 -366.5 -94t-255 -266t-91.5 -392q0 -243 134 -380.5t376 -137.5q117 0 219.5 20t221.5 66v-186q-230 -90 -465 -90q-217 0 -378 85.5t-246 241.5t-85 359q0 279 120.5 497t343 341.5t497.5 123.5 q318 0 499 -163.5t181 -458.5zM995 889q-82 0 -145.5 -51.5t-100 -137t-36.5 -174.5q0 -65 24.5 -102t69.5 -37q141 0 213 270l57 222q-36 10 -82 10z" /> +<glyph unicode="A" horiz-adv-x="1286" d="M842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333z" /> +<glyph unicode="B" horiz-adv-x="1270" d="M788 1462q229 0 346 -81.5t117 -243.5q0 -150 -83 -247.5t-236 -129.5v-6q100 -26 159.5 -96.5t59.5 -180.5q0 -229 -153 -353t-423 -124h-522l309 1462h426zM545 883h149q121 0 181.5 48.5t60.5 139.5q0 137 -170 137h-152zM412 256h180q117 0 183.5 58t66.5 161 q0 162 -183 162h-165z" /> +<glyph unicode="C" horiz-adv-x="1253" d="M905 1227q-132 0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5q0 262 104 482.5t278 335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19z" /> +<glyph unicode="D" horiz-adv-x="1386" d="M1323 909q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451l309 1462h396q270 0 417.5 -143t147.5 -410zM518 256q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115l-202 -952h106z" /> +<glyph unicode="E" horiz-adv-x="1110" d="M870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512z" /> +<glyph unicode="F" horiz-adv-x="1087" d="M358 0h-305l309 1462h814l-54 -254h-508l-79 -377h473l-56 -253h-473z" /> +<glyph unicode="G" horiz-adv-x="1413" d="M754 821h563l-162 -762q-134 -46 -248.5 -62.5t-242.5 -16.5q-259 0 -400 147t-141 422q0 268 107 484.5t301 334t448 117.5q218 0 410 -99l-115 -251q-74 40 -148 64t-161 24q-153 0 -273.5 -83t-189 -236.5t-68.5 -330.5q0 -172 72.5 -252.5t222.5 -80.5q76 0 170 24 l66 299h-267z" /> +<glyph unicode="H" horiz-adv-x="1434" d="M1135 0h-306l134 631h-471l-134 -631h-305l309 1462h306l-121 -573h471l121 573h305z" /> +<glyph unicode="I" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305z" /> +<glyph unicode="J" horiz-adv-x="678" d="M-135 -430q-94 0 -187 27v253q88 -20 164 -20q99 0 160.5 60.5t89.5 191.5l293 1380h305l-303 -1423q-52 -245 -175.5 -357t-346.5 -112z" /> +<glyph unicode="K" horiz-adv-x="1255" d="M1141 0h-338l-211 592l-125 -70l-109 -522h-305l309 1462h306l-152 -702l158 205l409 497h361l-594 -700z" /> +<glyph unicode="L" horiz-adv-x="1061" d="M53 0l309 1462h306l-256 -1206h512l-54 -256h-817z" /> +<glyph unicode="M" horiz-adv-x="1802" d="M838 369l551 1093h423l-309 -1462h-280l145 692q53 247 105 441h-5l-569 -1133h-281l-61 1133h-4q-11 -88 -38 -231t-187 -902h-275l309 1462h404l68 -1093h4z" /> +<glyph unicode="N" horiz-adv-x="1546" d="M1247 0h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 -688h-275l309 1462h357l340 -1077h4q12 76 39 217t180 860h274z" /> +<glyph unicode="O" horiz-adv-x="1495" d="M1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357 q0 142 -65 219.5t-183 77.5z" /> +<glyph unicode="P" horiz-adv-x="1188" d="M522 774h56q142 0 223.5 69t81.5 185q0 180 -195 180h-74zM1190 1036q0 -241 -169.5 -378.5t-467.5 -137.5h-86l-109 -520h-305l309 1462h338q242 0 366 -106.5t124 -319.5z" /> +<glyph unicode="Q" horiz-adv-x="1495" d="M1432 938q0 -316 -122.5 -555.5t-334.5 -337.5l254 -393h-359l-178 328h-26q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87 t155.5 246t56 357q0 142 -65 219.5t-183 77.5z" /> +<glyph unicode="R" horiz-adv-x="1247" d="M530 813h78q131 0 204 57t73 174q0 82 -47.5 123t-149.5 41h-74zM477 561l-119 -561h-305l309 1462h359q237 0 356 -102t119 -299q0 -158 -83 -271.5t-239 -168.5l261 -621h-332l-207 561h-119z" /> +<glyph unicode="S" horiz-adv-x="1085" d="M946 432q0 -209 -148 -330.5t-401 -121.5q-221 0 -356 90v274q193 -108 358 -108q112 0 175 42.5t63 116.5q0 43 -13.5 75.5t-38.5 60.5t-124 102q-138 99 -194 196t-56 209q0 129 62 230.5t176.5 158t263.5 56.5q217 0 397 -99l-109 -233q-156 74 -288 74 q-83 0 -136 -45t-53 -119q0 -61 33 -106.5t148 -120.5q121 -80 181 -176.5t60 -225.5z" /> +<glyph unicode="T" horiz-adv-x="1087" d="M571 0h-305l254 1204h-352l55 258h1010l-55 -258h-353z" /> +<glyph unicode="U" horiz-adv-x="1415" d="M1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306z" /> +<glyph unicode="V" horiz-adv-x="1208" d="M535 299q78 221 110 283l432 880h316l-748 -1462h-334l-127 1462h295l51 -880q4 -45 4 -133q-2 -103 -6 -150h7z" /> +<glyph unicode="W" horiz-adv-x="1831" d="M1006 1018q-46 -146 -115 -299l-324 -719h-338l-45 1462h287l6 -798q0 -52 -4 -173t-10 -174h6q22 64 67 180.5t60 145.5l369 819h270l21 -873q0 -146 -9 -272h6q43 129 131 349l330 796h309l-647 -1462h-346l-22 721l-2 139q0 88 4 158h-4z" /> +<glyph unicode="X" horiz-adv-x="1241" d="M1124 0h-331l-172 543l-396 -543h-342l576 764l-238 698h320l153 -518l363 518h344l-545 -725z" /> +<glyph unicode="Y" horiz-adv-x="1155" d="M627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312z" /> +<glyph unicode="Z" horiz-adv-x="1098" d="M920 0h-981l38 201l777 1005h-543l53 256h936l-41 -202l-782 -1004h596z" /> +<glyph unicode="[" horiz-adv-x="678" d="M436 -324h-473l381 1786h473l-45 -211h-215l-291 -1364h215z" /> +<glyph unicode="\" horiz-adv-x="862" d="M481 1462l224 -1462h-267l-217 1462h260z" /> +<glyph unicode="]" horiz-adv-x="678" d="M-92 -113h213l291 1364h-215l45 211h473l-381 -1786h-471z" /> +<glyph unicode="^" horiz-adv-x="1081" d="M20 520l619 950h147l277 -950h-223l-174 633l-402 -633h-244z" /> +<glyph unicode="_" horiz-adv-x="819" d="M635 -324h-821l30 140h822z" /> +<glyph unicode="`" horiz-adv-x="1135" d="M934 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="a" horiz-adv-x="1217" d="M406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44z" /> +<glyph unicode="b" horiz-adv-x="1219" d="M813 1139q146 0 230.5 -108t84.5 -298t-68 -367.5t-187 -281.5t-263 -104q-194 0 -276 163h-8l-58 -143h-231l330 1556h301l-62 -288q-41 -182 -84 -299h8q78 98 142.5 134t140.5 36zM692 895q-68 0 -130 -65t-102 -180.5t-40 -250.5q0 -80 37 -128t102 -48q67 0 128 69 t98.5 189.5t37.5 237.5q0 176 -131 176z" /> +<glyph unicode="c" horiz-adv-x="989" d="M506 -20q-201 0 -308.5 107.5t-107.5 303.5q0 212 74.5 385.5t209.5 268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 58.5v-246q-152 -79 -336 -79z" /> +<glyph unicode="d" horiz-adv-x="1217" d="M406 -20q-147 0 -231.5 107t-84.5 300q0 196 71.5 374.5t188.5 278t258 99.5q82 0 141.5 -37t112.5 -127h8l2 28q6 110 25 195l76 358h301l-330 -1556h-229l14 145h-4q-71 -87 -148.5 -126t-170.5 -39zM532 223q66 0 128.5 68.5t100.5 182.5t38 245q0 80 -37.5 128 t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234q0 -176 137 -176z" /> +<glyph unicode="e" horiz-adv-x="1141" d="M696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5t147.5 -52.5 q87 0 158 19t172 67v-227q-172 -86 -390 -86z" /> +<glyph unicode="f" horiz-adv-x="764" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z" /> +<glyph unicode="g" horiz-adv-x="1108" d="M1186 1116l-35 -166l-174 -41q16 -52 16 -118q0 -195 -121 -308.5t-329 -113.5q-59 0 -99 10q-84 -27 -84 -78q0 -34 30 -49t89 -23l137 -18q163 -21 237.5 -84.5t74.5 -183.5q0 -211 -156 -323t-446 -112q-208 0 -324.5 75.5t-116.5 207.5q0 102 68.5 175.5t214.5 121.5 q-74 47 -74 133q0 71 44.5 122.5t146.5 98.5q-65 49 -96 112t-31 153q0 199 125.5 315.5t341.5 116.5q83 0 166 -23h395zM365 -6q-106 -14 -160.5 -57t-54.5 -109q0 -115 194 -115q151 0 228 45t77 127q0 39 -32.5 60t-137.5 35zM614 948q-77 0 -124.5 -76.5t-47.5 -191.5 q0 -119 103 -119q75 0 121.5 76.5t46.5 193.5t-99 117z" /> +<glyph unicode="h" horiz-adv-x="1237" d="M977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l330 1556h301q-39 -181 -60 -278t-86 -309h8q62 77 138 123.5t176 46.5q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180z" /> +<glyph unicode="i" horiz-adv-x="608" d="M322 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123zM338 0h-301l237 1118h301z" /> +<glyph unicode="j" horiz-adv-x="608" d="M-90 -492q-104 0 -174 25v242q61 -21 114 -21q137 0 173 170l253 1194h302l-265 -1239q-77 -371 -403 -371zM324 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123z" /> +<glyph unicode="k" horiz-adv-x="1163" d="M920 1118h344l-498 -504l285 -614h-336l-183 420l-120 -72l-74 -348h-301l330 1556h301l-148 -694q-8 -41 -29 -117l-28 -102h4z" /> +<glyph unicode="l" horiz-adv-x="608" d="M338 0h-301l330 1556h301z" /> +<glyph unicode="m" horiz-adv-x="1853" d="M844 1139q219 0 262 -228h6q68 110 160.5 169t197.5 59q136 0 207.5 -85t71.5 -237q0 -76 -23 -180l-133 -637h-301l138 653q16 68 16 119q0 123 -98 123q-92 0 -166.5 -112t-118.5 -318l-96 -465h-301l137 653q16 68 16 119q0 123 -98 123q-92 0 -167 -114t-118 -318 l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228z" /> +<glyph unicode="n" horiz-adv-x="1237" d="M977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180z" /> +<glyph unicode="o" horiz-adv-x="1198" d="M805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118 t114 -325z" /> +<glyph unicode="p" horiz-adv-x="1219" d="M813 1139q146 0 230.5 -107.5t84.5 -300.5q0 -191 -68.5 -367.5t-187.5 -280t-262 -103.5q-83 0 -143 37t-111 126h-8q-12 -159 -43 -295l-72 -340h-301l342 1610h230l-17 -170h9q138 191 317 191zM692 895q-68 0 -131.5 -67.5t-102 -180t-38.5 -248.5q0 -80 37 -128 t102 -48q67 0 128 69t98.5 189.5t37.5 237.5q0 176 -131 176z" /> +<glyph unicode="q" horiz-adv-x="1217" d="M391 -20q-88 0 -156 47.5t-106.5 138.5t-38.5 219q0 198 72 377.5t189 278t257 98.5q86 0 152.5 -37.5t124.5 -126.5h8l57 143h232l-342 -1610h-301q47 218 73 337.5t84 304.5h-8q-72 -94 -143 -132t-154 -38zM535 223q64 0 127.5 70t100 181t36.5 245q0 80 -37.5 128 t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234q0 -88 36.5 -132t103.5 -44z" /> +<glyph unicode="r" horiz-adv-x="862" d="M842 1139q59 0 96 -11l-66 -290q-45 16 -100 16q-116 0 -203.5 -91.5t-124.5 -262.5l-106 -500h-301l237 1118h230l-21 -207h6q147 228 353 228z" /> +<glyph unicode="s" horiz-adv-x="969" d="M829 369q0 -188 -124.5 -288.5t-346.5 -100.5q-107 0 -186.5 15t-148.5 50v248q157 -90 319 -90q80 0 131 32.5t51 88.5q0 43 -37 77t-131 86q-121 68 -169 135.5t-48 159.5q0 170 110.5 263.5t315.5 93.5q201 0 363 -95l-99 -215q-140 84 -258 84q-57 0 -92 -25.5 t-35 -68.5q0 -39 32 -68.5t120 -74.5q123 -63 178 -137t55 -170z" /> +<glyph unicode="t" horiz-adv-x="840" d="M514 223q65 0 162 35v-225q-111 -53 -266 -53q-150 0 -220.5 63t-70.5 195q0 50 12 112l115 539h-152l29 147l196 84l132 236h194l-49 -238h283l-50 -229h-282l-115 -539q-6 -30 -6 -53q0 -74 88 -74z" /> +<glyph unicode="u" horiz-adv-x="1237" d="M262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213z" /> +<glyph unicode="v" horiz-adv-x="1049" d="M455 301q55 153 92 223l297 594h323l-604 -1118h-323l-138 1118h295l45 -586q7 -133 7 -231h6z" /> +<glyph unicode="w" horiz-adv-x="1614" d="M856 860q-62 -178 -123 -319l-233 -541h-324l-51 1118h281l4 -495l-4 -167l-7 -171h4q6 20 14 41.5t51 136.5t46 119l231 536h328v-536q0 -142 -10 -297h6l28 80q73 208 95 258l219 495h307l-530 -1118h-330l-6 520q0 155 10 340h-6z" /> +<glyph unicode="x" horiz-adv-x="1087" d="M379 573l-225 545h321l115 -334l244 334h354l-467 -561l244 -557h-326l-125 342l-264 -342h-350z" /> +<glyph unicode="y" horiz-adv-x="1063" d="M102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49z" /> +<glyph unicode="z" horiz-adv-x="932" d="M748 0h-795l35 180l575 705h-397l51 233h750l-43 -200l-566 -685h439z" /> +<glyph unicode="{" horiz-adv-x="727" d="M201 319q0 140 -209 140l45 229q122 0 192.5 41.5t92.5 138.5l61 285q38 170 131 239.5t270 69.5h84l-49 -225q-90 -2 -130.5 -34.5t-55.5 -106.5l-66 -297q-45 -207 -276 -236v-8q85 -26 126.5 -82.5t41.5 -134.5q0 -44 -15 -113l-36 -178q-7 -28 -7 -51q0 -54 33.5 -74 t91.5 -20v-226h-53q-167 0 -253.5 63.5t-86.5 184.5q0 57 14 125l39 184q15 69 15 86z" /> +<glyph unicode="|" d="M455 1550h219v-2015h-219v2015z" /> +<glyph unicode="}" horiz-adv-x="727" d="M256 1462q340 0 340 -248q0 -56 -14 -124l-39 -185q-15 -69 -15 -86q0 -139 209 -139l-45 -229q-122 0 -192.5 -42t-91.5 -139l-62 -284q-37 -170 -130.5 -240t-270.5 -70h-45v226q93 3 137 35.5t59 105.5l66 297q25 111 95 166t181 69v9q-168 51 -168 217q0 43 15 112 l37 179q6 30 6 51q0 54 -36.5 74t-109.5 20l41 225h33z" /> +<glyph unicode="~" d="M342 672q-54 0 -116.5 -33t-116.5 -88v231q101 109 256 109q64 0 117 -14t139 -50q64 -27 111 -41t95 -14q51 0 112 30.5t122 90.5v-231q-103 -109 -256 -109q-59 0 -109 11.5t-147 51.5q-89 38 -127 47t-80 9z" /> +<glyph unicode="¡" horiz-adv-x="586" d="M182 606h242l-158 -977h-340zM549 977q0 -92 -55.5 -145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108q0 85 54 139.5t144 54.5q73 0 114.5 -37t41.5 -104z" /> +<glyph unicode="¢" d="M575 -20h-188l49 210q-134 36 -203 136t-69 258q0 193 62.5 355t178 262.5t267.5 123.5l33 158h188l-35 -158q118 -14 225 -65l-92 -230q-53 23 -105 40t-118 17q-133 0 -216 -143t-83 -336q0 -96 45 -144t127 -48q75 0 140 23.5t134 58.5v-246q-136 -71 -299 -80z" /> +<glyph unicode="£" d="M872 1485q195 0 369 -86l-113 -232q-141 68 -237 68q-75 0 -123 -39.5t-68 -132.5l-47 -229h299l-45 -220h-299l-18 -84q-42 -195 -209 -270h655l-55 -260h-993l49 246q196 48 244 264l22 104h-192l45 220h192l49 247q41 197 162 300.5t313 103.5z" /> +<glyph unicode="¤" d="M190 723q0 102 54 197l-129 127l147 147l127 -127q91 53 197 53q105 0 196 -55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 -145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 -54 197zM397 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" /> +<glyph unicode="¥" d="M608 872l371 590h311l-506 -747h203l-39 -178h-252l-28 -138h252l-37 -178h-252l-47 -221h-291l47 221h-252l37 178h252l29 138h-252l39 178h196l-192 747h297z" /> +<glyph unicode="¦" d="M455 1550h219v-815h-219v815zM455 350h219v-815h-219v815z" /> +<glyph unicode="§" horiz-adv-x="995" d="M150 760q0 89 47.5 163t154.5 142q-42 34 -70 84.5t-28 107.5q0 149 117 234.5t313 85.5q172 0 344 -88l-82 -193q-147 84 -282 84q-144 0 -144 -106q0 -43 40.5 -76t127.5 -72q242 -106 242 -303q0 -188 -193 -303q38 -35 64 -85.5t26 -108.5q0 -161 -126 -253.5 t-345 -92.5q-204 0 -336 75v224q172 -105 345 -105q99 0 144.5 35t45.5 92q0 39 -33 72.5t-127 79.5q-117 57 -181 131t-64 176zM506 967q-51 -25 -82 -70.5t-31 -99.5t43.5 -96.5t143.5 -88.5q49 31 75.5 78.5t26.5 95.5q0 109 -176 181z" /> +<glyph unicode="¨" horiz-adv-x="1135" d="M397 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="©" horiz-adv-x="1704" d="M932 1010q-111 0 -163 -73t-52 -214q0 -134 55.5 -203t159.5 -69q43 0 108.5 15.5t124.5 43.5v-191q-131 -57 -262 -57q-196 0 -307 122.5t-111 336.5q0 225 117.5 351t325.5 126q142 0 284 -72l-75 -174q-114 58 -205 58zM125 731q0 200 100 375t275 276t377 101 q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 -305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5t-80.5 303.5t-222 223.5t-307.5 83 q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304z" /> +<glyph unicode="ª" horiz-adv-x="772" d="M369 752q-103 0 -160 70t-57 198q0 117 46 228t123 171t177 60q120 0 180 -103h6l39 90h154l-158 -702h-154l8 92h-2q-80 -104 -202 -104zM442 903q45 0 84 41.5t65.5 120t26.5 154.5q0 106 -88 106q-73 0 -123.5 -96t-50.5 -215q0 -111 86 -111z" /> +<glyph unicode="«" horiz-adv-x="1151" d="M72 569l401 463l191 -155l-279 -334l135 -350l-246 -103l-202 461v18zM559 569l402 463l190 -155l-279 -334l136 -350l-246 -103l-203 461v18z" /> +<glyph unicode="¬" d="M1061 248h-219v364h-733v219h952v-583z" /> +<glyph unicode="­" horiz-adv-x="659" d="M41 424zM41 424l53 250h524l-53 -250h-524z" /> +<glyph unicode="®" horiz-adv-x="1704" d="M1237 899q0 -86 -44 -149.5t-130 -96.5l197 -360h-254l-138 297h-67v-297h-230v874h308q173 0 265.5 -67.5t92.5 -200.5zM801 758h51q72 0 113 31t41 92q0 59 -35.5 88.5t-116.5 29.5h-53v-241zM125 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5 t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 -305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5t-80.5 303.5t-222 223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304z " /> +<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036l45 201h1036z" /> +<glyph unicode="°" horiz-adv-x="877" d="M164 1137q0 93 46.5 173.5t127.5 126.5t172 46q93 0 173.5 -47t126.5 -127t46 -172q0 -93 -46 -173t-126 -125.5t-174 -45.5q-93 0 -173 45t-126.5 125t-46.5 174zM354 1137q0 -63 45.5 -108.5t110.5 -45.5q66 0 111 46t45 108q0 63 -45.5 110t-110.5 47t-110.5 -47.5 t-45.5 -109.5z" /> +<glyph unicode="±" d="M475 674h-366v219h366v369h219v-369h367v-219h-367v-365h-219v365zM109 0v219h952v-219h-952z" /> +<glyph unicode="²" horiz-adv-x="776" d="M707 586h-648l35 166l273 219q111 91 141 122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 -95h347z" /> +<glyph unicode="³" horiz-adv-x="776" d="M813 1270q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176q0 -131 -107 -209t-285 -78q-75 0 -145.5 15.5t-120.5 40.5v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66 l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 -155.5z" /> +<glyph unicode="´" horiz-adv-x="1135" d="M483 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="µ" horiz-adv-x="1249" d="M424 348q0 -60 31.5 -92.5t79.5 -32.5q90 0 162.5 106.5t117.5 319.5l98 469h301l-237 -1118h-229l18 176h-6q-117 -196 -266 -196q-51 0 -89.5 19.5t-58.5 47.5h-6q-8 -66 -21.5 -139t-82.5 -400h-304l342 1610h301l-135 -645q-16 -70 -16 -125z" /> +<glyph unicode="¶" horiz-adv-x="1341" d="M1202 -260h-162v1616h-166v-1616h-161v819q-62 -18 -146 -18q-216 0 -318 125t-102 376q0 256 107.5 385t343.5 129h604v-1816z" /> +<glyph unicode="·" horiz-adv-x="584" d="M131 553zM131 695q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" /> +<glyph unicode="¸" horiz-adv-x="420" d="M262 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" /> +<glyph unicode="¹" horiz-adv-x="776" d="M528 1462h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165z" /> +<glyph unicode="º" horiz-adv-x="754" d="M809 1194q0 -128 -48.5 -232.5t-132.5 -157t-196 -52.5q-134 0 -202 75t-68 211q0 197 104 319t277 122q129 0 197.5 -73.5t68.5 -211.5zM522 1315q-64 0 -107.5 -89.5t-43.5 -199.5q0 -111 80 -111q63 0 105 85.5t42 207.5q0 107 -76 107z" /> +<glyph unicode="»" horiz-adv-x="1151" d="M1079 535l-401 -463l-191 155l279 334l-135 350l246 103l202 -461v-18zM592 535l-402 -463l-190 155l279 334l-136 350l246 103l203 -461v-18z" /> +<glyph unicode="¼" horiz-adv-x="1804" d="M97 0zM1500 1462l-1084 -1462h-239l1087 1462h236zM496 1462h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165zM1573 152h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM1252 320l58 231l22 74q-13 -20 -43 -58 t-211 -247h174z" /> +<glyph unicode="½" horiz-adv-x="1804" d="M97 0zM1588 1h-648l35 166l273 219q111 91 141 122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 -95h347zM496 1462h207l-186 -876h-246l84 397 q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165zM1500 1462l-1084 -1462h-239l1087 1462h236z" /> +<glyph unicode="¾" horiz-adv-x="1804" d="M133 0zM1633 1462l-1084 -1462h-239l1087 1462h236zM1634 152h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM1313 320l58 231l22 74q-13 -20 -43 -58t-211 -247h174zM854 1270q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176q0 -131 -107 -209 t-285 -78q-75 0 -145.5 15.5t-120.5 40.5v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 -155.5z" /> +<glyph unicode="¿" horiz-adv-x="940" d="M678 606l-14 -78q-19 -105 -76.5 -180t-169.5 -151q-122 -83 -156.5 -126t-34.5 -98q0 -118 133 -118q50 0 106.5 16t201.5 84l92 -221q-221 -125 -445 -125q-177 0 -280 87.5t-103 244.5q0 82 28.5 148.5t83.5 124t189 146.5q93 62 128 106.5t51 106.5l8 33h258z M772 977q0 -92 -55.5 -145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108q0 86 54.5 140t143.5 54q73 0 114.5 -37t41.5 -104z" /> +<glyph unicode="À" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM965 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="Á" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM735 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="Â" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM1235 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z " /> +<glyph unicode="Ã" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM999 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5 t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" /> +<glyph unicode="Ä" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM516 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM918 1720q0 78 42 118t120 40 q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="Å" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM1087 1567q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170z M930 1565q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z" /> +<glyph unicode="Æ" horiz-adv-x="1833" d="M1593 0h-817l74 348h-426l-219 -348h-328l922 1462h1104l-54 -254h-512l-67 -321h477l-55 -254h-478l-79 -377h512zM905 608l127 600h-80l-364 -600h317z" /> +<glyph unicode="Ç" horiz-adv-x="1253" d="M123 0zM905 1227q-132 0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5q0 262 104 482.5t278 335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19z M825 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" /> +<glyph unicode="È" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM906 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="É" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM608 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="Ê" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM1177 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="Ë" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM438 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM840 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5 t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="Ì" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM667 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="Í" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM414 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="Î" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM937 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="Ï" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM222 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM624 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="Ð" horiz-adv-x="1386" d="M1323 909q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451l125 596h-141l55 254h139l131 612h396q270 0 417.5 -143t147.5 -410zM518 256q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115l-75 -358h237l-55 -254h-238l-71 -340h106z" /> +<glyph unicode="Ñ" horiz-adv-x="1546" d="M53 0zM1247 0h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 -688h-275l309 1462h357l340 -1077h4q12 76 39 217t180 860h274zM1114 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36 t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" /> +<glyph unicode="Ò" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1053 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="Ó" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM753 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="Ô" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1308 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="Õ" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1071 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" /> +<glyph unicode="Ö" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM585 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM987 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="×" d="M428 723l-299 301l152 154l301 -299l305 299l153 -150l-305 -305l301 -303l-149 -152l-305 301l-301 -299l-150 152z" /> +<glyph unicode="Ø" horiz-adv-x="1495" d="M1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-180 0 -304 71l-108 -137l-154 115l121 151q-98 138 -98 357q0 265 99 487.5t273 341.5t402 119q182 0 305 -76l105 131l151 -117l-117 -145q91 -134 91 -340zM870 1233q-126 0 -229 -91.5t-160 -252.5t-57 -352 q0 -32 8 -101l596 754q-69 43 -158 43zM1133 930l-5 80l-589 -740q59 -37 153 -37q124 0 226 89t158.5 247.5t56.5 360.5z" /> +<glyph unicode="Ù" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM1002 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311 q36 -148 115 -303v-25z" /> +<glyph unicode="Ú" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM757 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5 t-194 -158.5h-209v25z" /> +<glyph unicode="Û" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM1284 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217 v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="Ü" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM565 1720q0 78 42.5 118t119.5 40q133 0 133 -108 q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM967 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="Ý" horiz-adv-x="1155" d="M186 0zM627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312zM606 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="Þ" horiz-adv-x="1188" d="M1143 807q0 -243 -170.5 -378.5t-466.5 -135.5h-86l-62 -293h-305l309 1462h306l-50 -229h35q242 0 366 -106.5t124 -319.5zM475 547h55q139 0 222.5 66.5t83.5 185.5q0 180 -195 180h-74z" /> +<glyph unicode="ß" horiz-adv-x="1350" d="M846 1567q208 0 331 -90t123 -240q0 -114 -49 -192t-178 -152q-73 -42 -96 -68.5t-23 -54.5q0 -23 22 -49.5t79 -69.5q107 -83 144.5 -150.5t37.5 -150.5q0 -170 -123.5 -270t-337.5 -100q-187 0 -297 61v240q128 -78 258 -78q101 0 148 33t47 86q0 40 -26.5 75 t-108.5 97q-94 72 -129 130t-35 126q0 84 45 145t162 127q66 37 104.5 76t38.5 96q0 62 -39.5 98.5t-124.5 36.5q-96 0 -156 -51.5t-85 -171.5l-254 -1219q-43 -198 -147 -288.5t-277 -90.5q-90 0 -160 25v242q61 -21 115 -21q133 0 170 178l254 1207q47 224 182 326 t385 102z" /> +<glyph unicode="à" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM869 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="á" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM598 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="â" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM1120 1240h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="ã" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM884 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" /> +<glyph unicode="ä" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM397 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="å" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM1023 1479q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170zM866 1477q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z " /> +<glyph unicode="æ" horiz-adv-x="1786" d="M1206 -20q-109 0 -179.5 27t-117.5 87l-16 -94h-188l14 145h-6q-71 -88 -146.5 -126.5t-167.5 -38.5q-146 0 -227.5 109t-81.5 296q0 200 68.5 375.5t185 277t258.5 101.5q96 0 160.5 -38.5t114.5 -125.5h6l57 143h188l-18 -90q44 49 120.5 80t168.5 31 q157 0 246.5 -83.5t89.5 -221.5q0 -187 -167 -288.5t-476 -101.5h-52l-2 -19v-19q0 -96 55.5 -147.5t159.5 -51.5q66 0 152 23t162 63v-227q-179 -86 -361 -86zM518 223q72 0 134 68t99 184.5t37 243.5q0 80 -33 128t-102 48q-68 0 -128 -69t-95 -185.5t-35 -241.5 q0 -84 32.5 -130t90.5 -46zM1341 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95z" /> +<glyph unicode="ç" horiz-adv-x="989" d="M90 0zM506 -20q-201 0 -308.5 107.5t-107.5 303.5q0 212 74.5 385.5t209.5 268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 58.5v-246q-152 -79 -336 -79z M653 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" /> +<glyph unicode="è" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM849 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="é" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM528 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="ê" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM1101 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="ë" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM365 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM767 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="ì" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM579 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="í" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM291 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="î" horiz-adv-x="608" d="M36 0zM338 0h-301l237 1118h301zM845 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="ï" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM126 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM528 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="ð" horiz-adv-x="1182" d="M618 1309q-34 34 -124 80l118 186q134 -61 232 -139l237 131l76 -152l-192 -106q81 -107 113 -235t32 -279q0 -249 -69.5 -432.5t-203.5 -283t-323 -99.5q-216 0 -329 110t-113 316q0 165 64.5 301t180.5 212t265 76q83 0 151.5 -31t114.5 -94h6q-20 213 -117 310 l-231 -131l-88 147zM528 205q66 0 122.5 55.5t89 148.5t32.5 193q0 77 -38.5 122.5t-108.5 45.5q-73 0 -130 -53t-88.5 -143t-31.5 -197q0 -81 39 -126.5t114 -45.5z" /> +<glyph unicode="ñ" horiz-adv-x="1237" d="M37 0zM977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180zM909 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28 t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" /> +<glyph unicode="ò" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM845 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" /> +<glyph unicode="ó" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM571 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="ô" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM1109 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="õ" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM865 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" /> +<glyph unicode="ö" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM386 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM788 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="÷" d="M109 612v219h952v-219h-952zM444 373q0 76 37 113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 -110.5t-102 -40.5t-102.5 39t-37.5 112z" /> +<glyph unicode="ø" horiz-adv-x="1198" d="M1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-123 0 -225 53l-109 -135l-141 108l119 148q-72 107 -72 256q0 213 71.5 379.5t206.5 258t316 91.5q131 0 227 -56l70 88l145 -110l-84 -105q66 -107 66 -260zM662 903q-81 0 -144.5 -62.5t-98 -169.5t-34.5 -233 v-12l365 453q-35 24 -88 24zM543 215q114 0 193 133t79 318v16l-358 -444q11 -8 35.5 -15.5t50.5 -7.5z" /> +<glyph unicode="ù" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM845 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311 q36 -148 115 -303v-25z" /> +<glyph unicode="ú" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM610 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209 v25z" /> +<glyph unicode="û" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM1143 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25 q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="ü" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM411 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 -43.5q-135 0 -135 110zM813 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="ý" horiz-adv-x="1063" d="M0 0zM102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49zM497 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" /> +<glyph unicode="þ" horiz-adv-x="1219" d="M813 1139q150 0 232.5 -106.5t82.5 -301.5q0 -199 -69 -381t-182 -276t-250 -94q-178 0 -271 163h-8q-12 -159 -43 -295l-72 -340h-301l435 2048h301l-66 -307q-29 -131 -80 -280h8q131 170 283 170zM682 895q-71 0 -130 -65t-95.5 -184.5t-36.5 -246.5q0 -80 33.5 -128 t105.5 -48q69 0 129 65t97.5 183.5t37.5 247.5q0 88 -37.5 132t-103.5 44z" /> +<glyph unicode="ÿ" horiz-adv-x="1063" d="M0 0zM102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49zM310 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5 q-135 0 -135 110zM712 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" /> +<glyph unicode="ı" horiz-adv-x="608" d="M338 0h-301l237 1118h301z" /> +<glyph unicode="Œ" horiz-adv-x="1845" d="M1606 0h-760q-93 -20 -180 -20q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q140 0 209 -23h809l-53 -254h-512l-68 -321h477l-55 -254h-477l-80 -377h512zM688 240q88 0 158 32l194 916q-62 39 -168 39q-121 0 -222 -91.5t-158.5 -251.5 t-57.5 -347q0 -147 66.5 -222t187.5 -75z" /> +<glyph unicode="œ" horiz-adv-x="1806" d="M1198 -20q-116 0 -208 38.5t-138 106.5q-63 -68 -147 -106.5t-207 -38.5q-187 0 -297.5 117t-110.5 317q0 216 69 380.5t200 254.5t309 90q209 0 313 -160q154 160 399 160q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-476 -101.5h-51l-2 -21v-20q0 -91 51 -143.5 t147 -52.5q87 0 158 19t172 67v-227q-93 -46 -185.5 -66t-203.5 -20zM645 893q-71 0 -127 -60.5t-90.5 -176.5t-34.5 -242q0 -91 36.5 -140t109.5 -49q109 0 179 134.5t70 336.5q0 96 -37 146.5t-106 50.5zM1362 922q-88 0 -165.5 -78.5t-102.5 -196.5h45q155 0 241 48.5 t86 131.5q0 95 -104 95z" /> +<glyph unicode="Ÿ" horiz-adv-x="1155" d="M186 0zM627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312zM432 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM834 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5 q-135 0 -135 110z" /> +<glyph unicode="ˆ" horiz-adv-x="1135" d="M1120 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" /> +<glyph unicode="˚" horiz-adv-x="1182" d="M1034 1479q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170zM877 1477q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z" /> +<glyph unicode="˜" horiz-adv-x="1135" d="M866 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="635" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="238" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode=" " horiz-adv-x="105" /> +<glyph unicode="‐" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" /> +<glyph unicode="‑" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" /> +<glyph unicode="‒" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" /> +<glyph unicode="–" horiz-adv-x="983" d="M41 436l49 230h852l-49 -230h-852z" /> +<glyph unicode="—" horiz-adv-x="1966" d="M41 436l49 230h1835l-49 -230h-1835z" /> +<glyph unicode="‘" horiz-adv-x="440" d="M123 961l-8 22q103 227 262 479h225q-91 -213 -194 -501h-285z" /> +<glyph unicode="’" horiz-adv-x="440" d="M586 1462l8 -22q-103 -227 -262 -479h-226q89 206 195 501h285z" /> +<glyph unicode="‚" horiz-adv-x="569" d="M377 238l8 -23q-103 -227 -262 -479h-225q88 207 194 502h285z" /> +<glyph unicode="“" horiz-adv-x="887" d="M569 961l-8 22q103 227 262 479h226q-97 -227 -195 -501h-285zM123 961l-8 22q103 227 262 479h225q-91 -213 -194 -501h-285z" /> +<glyph unicode="”" horiz-adv-x="887" d="M586 1462l8 -22q-103 -227 -262 -479h-226q89 206 195 501h285zM1032 1462l8 -22q-103 -227 -262 -479h-225q23 53 46.5 111t148.5 390h284z" /> +<glyph unicode="„" horiz-adv-x="1018" d="M377 238l8 -23q-103 -227 -262 -479h-225q88 207 194 502h285zM825 238l9 -23q-100 -221 -263 -479h-225q24 57 49 118.5t146 383.5h284z" /> +<glyph unicode="•" horiz-adv-x="739" d="M104 686q0 106 42.5 194t120 136.5t182.5 48.5q120 0 182.5 -67t62.5 -191q0 -177 -91.5 -277t-248.5 -100q-117 0 -183.5 67t-66.5 189z" /> +<glyph unicode="…" horiz-adv-x="1706" d="M25 0zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM586 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM1147 115q0 90 53.5 144t150.5 54 q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode="‹" horiz-adv-x="664" d="M72 569l401 463l191 -155l-279 -334l135 -350l-246 -103l-202 461v18z" /> +<glyph unicode="›" horiz-adv-x="664" d="M592 535l-402 -463l-190 155l279 334l-136 350l246 103l203 -461v-18z" /> +<glyph unicode="⁄" horiz-adv-x="256" d="M791 1462l-1084 -1462h-239l1087 1462h236z" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode="⁴" horiz-adv-x="776" d="M776 737h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM455 905l58 231l22 74q-13 -20 -43 -58t-211 -247h174z" /> +<glyph unicode="€" d="M899 1237q-97 0 -176 -74.5t-135 -212.5h348l-39 -176h-360q-11 -34 -25 -115h299l-37 -178h-280q0 -120 44.5 -181.5t147.5 -61.5q133 0 283 63v-258q-126 -63 -330 -63q-446 0 -446 501h-152l37 178h127q9 67 22 115h-125l39 176h135q87 252 250.5 393.5t374.5 141.5 q100 0 179 -23t165 -80l-125 -223q-87 49 -131 63.5t-90 14.5z" /> +<glyph unicode="™" horiz-adv-x="1534" d="M471 741h-168v572h-197v149h564v-149h-199v-572zM1047 741l-166 529h-7l5 -111v-418h-164v721h248l159 -510l170 510h240v-721h-168v408l4 121h-6l-174 -529h-141z" /> +<glyph unicode="" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" /> +<glyph horiz-adv-x="1217" d="M0 0z" /> +<hkern u1=""" u2="Ÿ" k="-20" /> +<hkern u1=""" u2="œ" k="123" /> +<hkern u1=""" u2="ü" k="61" /> +<hkern u1=""" u2="û" k="61" /> +<hkern u1=""" u2="ú" k="61" /> +<hkern u1=""" u2="ù" k="61" /> +<hkern u1=""" u2="ø" k="123" /> +<hkern u1=""" u2="ö" k="123" /> +<hkern u1=""" u2="õ" k="123" /> +<hkern u1=""" u2="ô" k="123" /> +<hkern u1=""" u2="ó" k="123" /> +<hkern u1=""" u2="ò" k="123" /> +<hkern u1=""" u2="ë" k="123" /> +<hkern u1=""" u2="ê" k="123" /> +<hkern u1=""" u2="é" k="123" /> +<hkern u1=""" u2="è" k="123" /> +<hkern u1=""" u2="ç" k="123" /> +<hkern u1=""" u2="æ" k="82" /> +<hkern u1=""" u2="å" k="82" /> +<hkern u1=""" u2="ä" k="82" /> +<hkern u1=""" u2="ã" k="82" /> +<hkern u1=""" u2="â" k="82" /> +<hkern u1=""" u2="á" k="82" /> +<hkern u1=""" u2="à" k="123" /> +<hkern u1=""" u2="Ý" k="-20" /> +<hkern u1=""" u2="Å" k="143" /> +<hkern u1=""" u2="Ä" k="143" /> +<hkern u1=""" u2="Ã" k="143" /> +<hkern u1=""" u2="Â" k="143" /> +<hkern u1=""" u2="Á" k="143" /> +<hkern u1=""" u2="À" k="143" /> +<hkern u1=""" u2="u" k="61" /> +<hkern u1=""" u2="s" k="61" /> +<hkern u1=""" u2="r" k="61" /> +<hkern u1=""" u2="q" k="123" /> +<hkern u1=""" u2="p" k="61" /> +<hkern u1=""" u2="o" k="123" /> +<hkern u1=""" u2="n" k="61" /> +<hkern u1=""" u2="m" k="61" /> +<hkern u1=""" u2="g" k="61" /> +<hkern u1=""" u2="e" k="123" /> +<hkern u1=""" u2="d" k="123" /> +<hkern u1=""" u2="c" k="123" /> +<hkern u1=""" u2="a" k="82" /> +<hkern u1=""" u2="Y" k="-20" /> +<hkern u1=""" u2="W" k="-41" /> +<hkern u1=""" u2="V" k="-41" /> +<hkern u1=""" u2="T" k="-41" /> +<hkern u1=""" u2="A" k="143" /> +<hkern u1="'" u2="Ÿ" k="-20" /> +<hkern u1="'" u2="œ" k="123" /> +<hkern u1="'" u2="ü" k="61" /> +<hkern u1="'" u2="û" k="61" /> +<hkern u1="'" u2="ú" k="61" /> +<hkern u1="'" u2="ù" k="61" /> +<hkern u1="'" u2="ø" k="123" /> +<hkern u1="'" u2="ö" k="123" /> +<hkern u1="'" u2="õ" k="123" /> +<hkern u1="'" u2="ô" k="123" /> +<hkern u1="'" u2="ó" k="123" /> +<hkern u1="'" u2="ò" k="123" /> +<hkern u1="'" u2="ë" k="123" /> +<hkern u1="'" u2="ê" k="123" /> +<hkern u1="'" u2="é" k="123" /> +<hkern u1="'" u2="è" k="123" /> +<hkern u1="'" u2="ç" k="123" /> +<hkern u1="'" u2="æ" k="82" /> +<hkern u1="'" u2="å" k="82" /> +<hkern u1="'" u2="ä" k="82" /> +<hkern u1="'" u2="ã" k="82" /> +<hkern u1="'" u2="â" k="82" /> +<hkern u1="'" u2="á" k="82" /> +<hkern u1="'" u2="à" k="123" /> +<hkern u1="'" u2="Ý" k="-20" /> +<hkern u1="'" u2="Å" k="143" /> +<hkern u1="'" u2="Ä" k="143" /> +<hkern u1="'" u2="Ã" k="143" /> +<hkern u1="'" u2="Â" k="143" /> +<hkern u1="'" u2="Á" k="143" /> +<hkern u1="'" u2="À" k="143" /> +<hkern u1="'" u2="u" k="61" /> +<hkern u1="'" u2="s" k="61" /> +<hkern u1="'" u2="r" k="61" /> +<hkern u1="'" u2="q" k="123" /> +<hkern u1="'" u2="p" k="61" /> +<hkern u1="'" u2="o" k="123" /> +<hkern u1="'" u2="n" k="61" /> +<hkern u1="'" u2="m" k="61" /> +<hkern u1="'" u2="g" k="61" /> +<hkern u1="'" u2="e" k="123" /> +<hkern u1="'" u2="d" k="123" /> +<hkern u1="'" u2="c" k="123" /> +<hkern u1="'" u2="a" k="82" /> +<hkern u1="'" u2="Y" k="-20" /> +<hkern u1="'" u2="W" k="-41" /> +<hkern u1="'" u2="V" k="-41" /> +<hkern u1="'" u2="T" k="-41" /> +<hkern u1="'" u2="A" k="143" /> +<hkern u1="(" u2="J" k="-184" /> +<hkern u1="," u2="Ÿ" k="123" /> +<hkern u1="," u2="Œ" k="102" /> +<hkern u1="," u2="Ý" k="123" /> +<hkern u1="," u2="Ü" k="41" /> +<hkern u1="," u2="Û" k="41" /> +<hkern u1="," u2="Ú" k="41" /> +<hkern u1="," u2="Ù" k="41" /> +<hkern u1="," u2="Ø" k="102" /> +<hkern u1="," u2="Ö" k="102" /> +<hkern u1="," u2="Õ" k="102" /> +<hkern u1="," u2="Ô" k="102" /> +<hkern u1="," u2="Ó" k="102" /> +<hkern u1="," u2="Ò" k="102" /> +<hkern u1="," u2="Ç" k="102" /> +<hkern u1="," u2="Y" k="123" /> +<hkern u1="," u2="W" k="123" /> +<hkern u1="," u2="V" k="123" /> +<hkern u1="," u2="U" k="41" /> +<hkern u1="," u2="T" k="143" /> +<hkern u1="," u2="Q" k="102" /> +<hkern u1="," u2="O" k="102" /> +<hkern u1="," u2="G" k="102" /> +<hkern u1="," u2="C" k="102" /> +<hkern u1="-" u2="T" k="82" /> +<hkern u1="." u2="Ÿ" k="123" /> +<hkern u1="." u2="Œ" k="102" /> +<hkern u1="." u2="Ý" k="123" /> +<hkern u1="." u2="Ü" k="41" /> +<hkern u1="." u2="Û" k="41" /> +<hkern u1="." u2="Ú" k="41" /> +<hkern u1="." u2="Ù" k="41" /> +<hkern u1="." u2="Ø" k="102" /> +<hkern u1="." u2="Ö" k="102" /> +<hkern u1="." u2="Õ" k="102" /> +<hkern u1="." u2="Ô" k="102" /> +<hkern u1="." u2="Ó" k="102" /> +<hkern u1="." u2="Ò" k="102" /> +<hkern u1="." u2="Ç" k="102" /> +<hkern u1="." u2="Y" k="123" /> +<hkern u1="." u2="W" k="123" /> +<hkern u1="." u2="V" k="123" /> +<hkern u1="." u2="U" k="41" /> +<hkern u1="." u2="T" k="143" /> +<hkern u1="." u2="Q" k="102" /> +<hkern u1="." u2="O" k="102" /> +<hkern u1="." u2="G" k="102" /> +<hkern u1="." u2="C" k="102" /> +<hkern u1="A" u2="”" k="143" /> +<hkern u1="A" u2="’" k="143" /> +<hkern u1="A" u2="Ÿ" k="123" /> +<hkern u1="A" u2="Œ" k="41" /> +<hkern u1="A" u2="Ý" k="123" /> +<hkern u1="A" u2="Ø" k="41" /> +<hkern u1="A" u2="Ö" k="41" /> +<hkern u1="A" u2="Õ" k="41" /> +<hkern u1="A" u2="Ô" k="41" /> +<hkern u1="A" u2="Ó" k="41" /> +<hkern u1="A" u2="Ò" k="41" /> +<hkern u1="A" u2="Ç" k="41" /> +<hkern u1="A" u2="Y" k="123" /> +<hkern u1="A" u2="W" k="82" /> +<hkern u1="A" u2="V" k="82" /> +<hkern u1="A" u2="T" k="143" /> +<hkern u1="A" u2="Q" k="41" /> +<hkern u1="A" u2="O" k="41" /> +<hkern u1="A" u2="J" k="-266" /> +<hkern u1="A" u2="G" k="41" /> +<hkern u1="A" u2="C" k="41" /> +<hkern u1="A" u2="'" k="143" /> +<hkern u1="A" u2=""" k="143" /> +<hkern u1="B" u2="„" k="82" /> +<hkern u1="B" u2="‚" k="82" /> +<hkern u1="B" u2="Ÿ" k="20" /> +<hkern u1="B" u2="Ý" k="20" /> +<hkern u1="B" u2="Å" k="41" /> +<hkern u1="B" u2="Ä" k="41" /> +<hkern u1="B" u2="Ã" k="41" /> +<hkern u1="B" u2="Â" k="41" /> +<hkern u1="B" u2="Á" k="41" /> +<hkern u1="B" u2="À" k="41" /> +<hkern u1="B" u2="Z" k="20" /> +<hkern u1="B" u2="Y" k="20" /> +<hkern u1="B" u2="X" k="41" /> +<hkern u1="B" u2="W" k="20" /> +<hkern u1="B" u2="V" k="20" /> +<hkern u1="B" u2="T" k="61" /> +<hkern u1="B" u2="A" k="41" /> +<hkern u1="B" u2="." k="82" /> +<hkern u1="B" u2="," k="82" /> +<hkern u1="C" u2="Œ" k="41" /> +<hkern u1="C" u2="Ø" k="41" /> +<hkern u1="C" u2="Ö" k="41" /> +<hkern u1="C" u2="Õ" k="41" /> +<hkern u1="C" u2="Ô" k="41" /> +<hkern u1="C" u2="Ó" k="41" /> +<hkern u1="C" u2="Ò" k="41" /> +<hkern u1="C" u2="Ç" k="41" /> +<hkern u1="C" u2="Q" k="41" /> +<hkern u1="C" u2="O" k="41" /> +<hkern u1="C" u2="G" k="41" /> +<hkern u1="C" u2="C" k="41" /> +<hkern u1="D" u2="„" k="82" /> +<hkern u1="D" u2="‚" k="82" /> +<hkern u1="D" u2="Ÿ" k="20" /> +<hkern u1="D" u2="Ý" k="20" /> +<hkern u1="D" u2="Å" k="41" /> +<hkern u1="D" u2="Ä" k="41" /> +<hkern u1="D" u2="Ã" k="41" /> +<hkern u1="D" u2="Â" k="41" /> +<hkern u1="D" u2="Á" k="41" /> +<hkern u1="D" u2="À" k="41" /> +<hkern u1="D" u2="Z" k="20" /> +<hkern u1="D" u2="Y" k="20" /> +<hkern u1="D" u2="X" k="41" /> +<hkern u1="D" u2="W" k="20" /> +<hkern u1="D" u2="V" k="20" /> +<hkern u1="D" u2="T" k="61" /> +<hkern u1="D" u2="A" k="41" /> +<hkern u1="D" u2="." k="82" /> +<hkern u1="D" u2="," k="82" /> +<hkern u1="E" u2="J" k="-123" /> +<hkern u1="F" u2="„" k="123" /> +<hkern u1="F" u2="‚" k="123" /> +<hkern u1="F" u2="Å" k="41" /> +<hkern u1="F" u2="Ä" k="41" /> +<hkern u1="F" u2="Ã" k="41" /> +<hkern u1="F" u2="Â" k="41" /> +<hkern u1="F" u2="Á" k="41" /> +<hkern u1="F" u2="À" k="41" /> +<hkern u1="F" u2="A" k="41" /> +<hkern u1="F" u2="?" k="-41" /> +<hkern u1="F" u2="." k="123" /> +<hkern u1="F" u2="," k="123" /> +<hkern u1="K" u2="Œ" k="41" /> +<hkern u1="K" u2="Ø" k="41" /> +<hkern u1="K" u2="Ö" k="41" /> +<hkern u1="K" u2="Õ" k="41" /> +<hkern u1="K" u2="Ô" k="41" /> +<hkern u1="K" u2="Ó" k="41" /> +<hkern u1="K" u2="Ò" k="41" /> +<hkern u1="K" u2="Ç" k="41" /> +<hkern u1="K" u2="Q" k="41" /> +<hkern u1="K" u2="O" k="41" /> +<hkern u1="K" u2="G" k="41" /> +<hkern u1="K" u2="C" k="41" /> +<hkern u1="L" u2="”" k="164" /> +<hkern u1="L" u2="’" k="164" /> +<hkern u1="L" u2="Ÿ" k="61" /> +<hkern u1="L" u2="Œ" k="41" /> +<hkern u1="L" u2="Ý" k="61" /> +<hkern u1="L" u2="Ü" k="20" /> +<hkern u1="L" u2="Û" k="20" /> +<hkern u1="L" u2="Ú" k="20" /> +<hkern u1="L" u2="Ù" k="20" /> +<hkern u1="L" u2="Ø" k="41" /> +<hkern u1="L" u2="Ö" k="41" /> +<hkern u1="L" u2="Õ" k="41" /> +<hkern u1="L" u2="Ô" k="41" /> +<hkern u1="L" u2="Ó" k="41" /> +<hkern u1="L" u2="Ò" k="41" /> +<hkern u1="L" u2="Ç" k="41" /> +<hkern u1="L" u2="Y" k="61" /> +<hkern u1="L" u2="W" k="41" /> +<hkern u1="L" u2="V" k="41" /> +<hkern u1="L" u2="U" k="20" /> +<hkern u1="L" u2="T" k="41" /> +<hkern u1="L" u2="Q" k="41" /> +<hkern u1="L" u2="O" k="41" /> +<hkern u1="L" u2="G" k="41" /> +<hkern u1="L" u2="C" k="41" /> +<hkern u1="L" u2="'" k="164" /> +<hkern u1="L" u2=""" k="164" /> +<hkern u1="O" u2="„" k="82" /> +<hkern u1="O" u2="‚" k="82" /> +<hkern u1="O" u2="Ÿ" k="20" /> +<hkern u1="O" u2="Ý" k="20" /> +<hkern u1="O" u2="Å" k="41" /> +<hkern u1="O" u2="Ä" k="41" /> +<hkern u1="O" u2="Ã" k="41" /> +<hkern u1="O" u2="Â" k="41" /> +<hkern u1="O" u2="Á" k="41" /> +<hkern u1="O" u2="À" k="41" /> +<hkern u1="O" u2="Z" k="20" /> +<hkern u1="O" u2="Y" k="20" /> +<hkern u1="O" u2="X" k="41" /> +<hkern u1="O" u2="W" k="20" /> +<hkern u1="O" u2="V" k="20" /> +<hkern u1="O" u2="T" k="61" /> +<hkern u1="O" u2="A" k="41" /> +<hkern u1="O" u2="." k="82" /> +<hkern u1="O" u2="," k="82" /> +<hkern u1="P" u2="„" k="266" /> +<hkern u1="P" u2="‚" k="266" /> +<hkern u1="P" u2="Å" k="102" /> +<hkern u1="P" u2="Ä" k="102" /> +<hkern u1="P" u2="Ã" k="102" /> +<hkern u1="P" u2="Â" k="102" /> +<hkern u1="P" u2="Á" k="102" /> +<hkern u1="P" u2="À" k="102" /> +<hkern u1="P" u2="Z" k="20" /> +<hkern u1="P" u2="X" k="41" /> +<hkern u1="P" u2="A" k="102" /> +<hkern u1="P" u2="." k="266" /> +<hkern u1="P" u2="," k="266" /> +<hkern u1="Q" u2="„" k="82" /> +<hkern u1="Q" u2="‚" k="82" /> +<hkern u1="Q" u2="Ÿ" k="20" /> +<hkern u1="Q" u2="Ý" k="20" /> +<hkern u1="Q" u2="Å" k="41" /> +<hkern u1="Q" u2="Ä" k="41" /> +<hkern u1="Q" u2="Ã" k="41" /> +<hkern u1="Q" u2="Â" k="41" /> +<hkern u1="Q" u2="Á" k="41" /> +<hkern u1="Q" u2="À" k="41" /> +<hkern u1="Q" u2="Z" k="20" /> +<hkern u1="Q" u2="Y" k="20" /> +<hkern u1="Q" u2="X" k="41" /> +<hkern u1="Q" u2="W" k="20" /> +<hkern u1="Q" u2="V" k="20" /> +<hkern u1="Q" u2="T" k="61" /> +<hkern u1="Q" u2="A" k="41" /> +<hkern u1="Q" u2="." k="82" /> +<hkern u1="Q" u2="," k="82" /> +<hkern u1="T" u2="„" k="123" /> +<hkern u1="T" u2="‚" k="123" /> +<hkern u1="T" u2="—" k="82" /> +<hkern u1="T" u2="–" k="82" /> +<hkern u1="T" u2="œ" k="143" /> +<hkern u1="T" u2="Œ" k="41" /> +<hkern u1="T" u2="ý" k="41" /> +<hkern u1="T" u2="ü" k="102" /> +<hkern u1="T" u2="û" k="102" /> +<hkern u1="T" u2="ú" k="102" /> +<hkern u1="T" u2="ù" k="102" /> +<hkern u1="T" u2="ø" k="143" /> +<hkern u1="T" u2="ö" k="143" /> +<hkern u1="T" u2="õ" k="143" /> +<hkern u1="T" u2="ô" k="143" /> +<hkern u1="T" u2="ó" k="143" /> +<hkern u1="T" u2="ò" k="143" /> +<hkern u1="T" u2="ë" k="143" /> +<hkern u1="T" u2="ê" k="143" /> +<hkern u1="T" u2="é" k="143" /> +<hkern u1="T" u2="è" k="143" /> +<hkern u1="T" u2="ç" k="143" /> +<hkern u1="T" u2="æ" k="164" /> +<hkern u1="T" u2="å" k="164" /> +<hkern u1="T" u2="ä" k="164" /> +<hkern u1="T" u2="ã" k="164" /> +<hkern u1="T" u2="â" k="164" /> +<hkern u1="T" u2="á" k="164" /> +<hkern u1="T" u2="à" k="143" /> +<hkern u1="T" u2="Ø" k="41" /> +<hkern u1="T" u2="Ö" k="41" /> +<hkern u1="T" u2="Õ" k="41" /> +<hkern u1="T" u2="Ô" k="41" /> +<hkern u1="T" u2="Ó" k="41" /> +<hkern u1="T" u2="Ò" k="41" /> +<hkern u1="T" u2="Ç" k="41" /> +<hkern u1="T" u2="Å" k="143" /> +<hkern u1="T" u2="Ä" k="143" /> +<hkern u1="T" u2="Ã" k="143" /> +<hkern u1="T" u2="Â" k="143" /> +<hkern u1="T" u2="Á" k="143" /> +<hkern u1="T" u2="À" k="143" /> +<hkern u1="T" u2="z" k="82" /> +<hkern u1="T" u2="y" k="41" /> +<hkern u1="T" u2="x" k="41" /> +<hkern u1="T" u2="w" k="41" /> +<hkern u1="T" u2="v" k="41" /> +<hkern u1="T" u2="u" k="102" /> +<hkern u1="T" u2="s" k="123" /> +<hkern u1="T" u2="r" k="102" /> +<hkern u1="T" u2="q" k="143" /> +<hkern u1="T" u2="p" k="102" /> +<hkern u1="T" u2="o" k="143" /> +<hkern u1="T" u2="n" k="102" /> +<hkern u1="T" u2="m" k="102" /> +<hkern u1="T" u2="g" k="143" /> +<hkern u1="T" u2="e" k="143" /> +<hkern u1="T" u2="d" k="143" /> +<hkern u1="T" u2="c" k="143" /> +<hkern u1="T" u2="a" k="164" /> +<hkern u1="T" u2="T" k="-41" /> +<hkern u1="T" u2="Q" k="41" /> +<hkern u1="T" u2="O" k="41" /> +<hkern u1="T" u2="G" k="41" /> +<hkern u1="T" u2="C" k="41" /> +<hkern u1="T" u2="A" k="143" /> +<hkern u1="T" u2="?" k="-41" /> +<hkern u1="T" u2="." k="123" /> +<hkern u1="T" u2="-" k="82" /> +<hkern u1="T" u2="," k="123" /> +<hkern u1="U" u2="„" k="41" /> +<hkern u1="U" u2="‚" k="41" /> +<hkern u1="U" u2="Å" k="20" /> +<hkern u1="U" u2="Ä" k="20" /> +<hkern u1="U" u2="Ã" k="20" /> +<hkern u1="U" u2="Â" k="20" /> +<hkern u1="U" u2="Á" k="20" /> +<hkern u1="U" u2="À" k="20" /> +<hkern u1="U" u2="A" k="20" /> +<hkern u1="U" u2="." k="41" /> +<hkern u1="U" u2="," k="41" /> +<hkern u1="V" u2="„" k="102" /> +<hkern u1="V" u2="‚" k="102" /> +<hkern u1="V" u2="œ" k="41" /> +<hkern u1="V" u2="Œ" k="20" /> +<hkern u1="V" u2="ü" k="20" /> +<hkern u1="V" u2="û" k="20" /> +<hkern u1="V" u2="ú" k="20" /> +<hkern u1="V" u2="ù" k="20" /> +<hkern u1="V" u2="ø" k="41" /> +<hkern u1="V" u2="ö" k="41" /> +<hkern u1="V" u2="õ" k="41" /> +<hkern u1="V" u2="ô" k="41" /> +<hkern u1="V" u2="ó" k="41" /> +<hkern u1="V" u2="ò" k="41" /> +<hkern u1="V" u2="ë" k="41" /> +<hkern u1="V" u2="ê" k="41" /> +<hkern u1="V" u2="é" k="41" /> +<hkern u1="V" u2="è" k="41" /> +<hkern u1="V" u2="ç" k="41" /> +<hkern u1="V" u2="æ" k="41" /> +<hkern u1="V" u2="å" k="41" /> +<hkern u1="V" u2="ä" k="41" /> +<hkern u1="V" u2="ã" k="41" /> +<hkern u1="V" u2="â" k="41" /> +<hkern u1="V" u2="á" k="41" /> +<hkern u1="V" u2="à" k="41" /> +<hkern u1="V" u2="Ø" k="20" /> +<hkern u1="V" u2="Ö" k="20" /> +<hkern u1="V" u2="Õ" k="20" /> +<hkern u1="V" u2="Ô" k="20" /> +<hkern u1="V" u2="Ó" k="20" /> +<hkern u1="V" u2="Ò" k="20" /> +<hkern u1="V" u2="Ç" k="20" /> +<hkern u1="V" u2="Å" k="82" /> +<hkern u1="V" u2="Ä" k="82" /> +<hkern u1="V" u2="Ã" k="82" /> +<hkern u1="V" u2="Â" k="82" /> +<hkern u1="V" u2="Á" k="82" /> +<hkern u1="V" u2="À" k="82" /> +<hkern u1="V" u2="u" k="20" /> +<hkern u1="V" u2="s" k="20" /> +<hkern u1="V" u2="r" k="20" /> +<hkern u1="V" u2="q" k="41" /> +<hkern u1="V" u2="p" k="20" /> +<hkern u1="V" u2="o" k="41" /> +<hkern u1="V" u2="n" k="20" /> +<hkern u1="V" u2="m" k="20" /> +<hkern u1="V" u2="g" k="20" /> +<hkern u1="V" u2="e" k="41" /> +<hkern u1="V" u2="d" k="41" /> +<hkern u1="V" u2="c" k="41" /> +<hkern u1="V" u2="a" k="41" /> +<hkern u1="V" u2="Q" k="20" /> +<hkern u1="V" u2="O" k="20" /> +<hkern u1="V" u2="G" k="20" /> +<hkern u1="V" u2="C" k="20" /> +<hkern u1="V" u2="A" k="82" /> +<hkern u1="V" u2="?" k="-41" /> +<hkern u1="V" u2="." k="102" /> +<hkern u1="V" u2="," k="102" /> +<hkern u1="W" u2="„" k="102" /> +<hkern u1="W" u2="‚" k="102" /> +<hkern u1="W" u2="œ" k="41" /> +<hkern u1="W" u2="Œ" k="20" /> +<hkern u1="W" u2="ü" k="20" /> +<hkern u1="W" u2="û" k="20" /> +<hkern u1="W" u2="ú" k="20" /> +<hkern u1="W" u2="ù" k="20" /> +<hkern u1="W" u2="ø" k="41" /> +<hkern u1="W" u2="ö" k="41" /> +<hkern u1="W" u2="õ" k="41" /> +<hkern u1="W" u2="ô" k="41" /> +<hkern u1="W" u2="ó" k="41" /> +<hkern u1="W" u2="ò" k="41" /> +<hkern u1="W" u2="ë" k="41" /> +<hkern u1="W" u2="ê" k="41" /> +<hkern u1="W" u2="é" k="41" /> +<hkern u1="W" u2="è" k="41" /> +<hkern u1="W" u2="ç" k="41" /> +<hkern u1="W" u2="æ" k="41" /> +<hkern u1="W" u2="å" k="41" /> +<hkern u1="W" u2="ä" k="41" /> +<hkern u1="W" u2="ã" k="41" /> +<hkern u1="W" u2="â" k="41" /> +<hkern u1="W" u2="á" k="41" /> +<hkern u1="W" u2="à" k="41" /> +<hkern u1="W" u2="Ø" k="20" /> +<hkern u1="W" u2="Ö" k="20" /> +<hkern u1="W" u2="Õ" k="20" /> +<hkern u1="W" u2="Ô" k="20" /> +<hkern u1="W" u2="Ó" k="20" /> +<hkern u1="W" u2="Ò" k="20" /> +<hkern u1="W" u2="Ç" k="20" /> +<hkern u1="W" u2="Å" k="82" /> +<hkern u1="W" u2="Ä" k="82" /> +<hkern u1="W" u2="Ã" k="82" /> +<hkern u1="W" u2="Â" k="82" /> +<hkern u1="W" u2="Á" k="82" /> +<hkern u1="W" u2="À" k="82" /> +<hkern u1="W" u2="u" k="20" /> +<hkern u1="W" u2="s" k="20" /> +<hkern u1="W" u2="r" k="20" /> +<hkern u1="W" u2="q" k="41" /> +<hkern u1="W" u2="p" k="20" /> +<hkern u1="W" u2="o" k="41" /> +<hkern u1="W" u2="n" k="20" /> +<hkern u1="W" u2="m" k="20" /> +<hkern u1="W" u2="g" k="20" /> +<hkern u1="W" u2="e" k="41" /> +<hkern u1="W" u2="d" k="41" /> +<hkern u1="W" u2="c" k="41" /> +<hkern u1="W" u2="a" k="41" /> +<hkern u1="W" u2="Q" k="20" /> +<hkern u1="W" u2="O" k="20" /> +<hkern u1="W" u2="G" k="20" /> +<hkern u1="W" u2="C" k="20" /> +<hkern u1="W" u2="A" k="82" /> +<hkern u1="W" u2="?" k="-41" /> +<hkern u1="W" u2="." k="102" /> +<hkern u1="W" u2="," k="102" /> +<hkern u1="X" u2="Œ" k="41" /> +<hkern u1="X" u2="Ø" k="41" /> +<hkern u1="X" u2="Ö" k="41" /> +<hkern u1="X" u2="Õ" k="41" /> +<hkern u1="X" u2="Ô" k="41" /> +<hkern u1="X" u2="Ó" k="41" /> +<hkern u1="X" u2="Ò" k="41" /> +<hkern u1="X" u2="Ç" k="41" /> +<hkern u1="X" u2="Q" k="41" /> +<hkern u1="X" u2="O" k="41" /> +<hkern u1="X" u2="G" k="41" /> +<hkern u1="X" u2="C" k="41" /> +<hkern u1="Y" u2="„" k="123" /> +<hkern u1="Y" u2="‚" k="123" /> +<hkern u1="Y" u2="œ" k="102" /> +<hkern u1="Y" u2="Œ" k="41" /> +<hkern u1="Y" u2="ü" k="61" /> +<hkern u1="Y" u2="û" k="61" /> +<hkern u1="Y" u2="ú" k="61" /> +<hkern u1="Y" u2="ù" k="61" /> +<hkern u1="Y" u2="ø" k="102" /> +<hkern u1="Y" u2="ö" k="102" /> +<hkern u1="Y" u2="õ" k="102" /> +<hkern u1="Y" u2="ô" k="102" /> +<hkern u1="Y" u2="ó" k="102" /> +<hkern u1="Y" u2="ò" k="102" /> +<hkern u1="Y" u2="ë" k="102" /> +<hkern u1="Y" u2="ê" k="102" /> +<hkern u1="Y" u2="é" k="102" /> +<hkern u1="Y" u2="è" k="102" /> +<hkern u1="Y" u2="ç" k="102" /> +<hkern u1="Y" u2="æ" k="102" /> +<hkern u1="Y" u2="å" k="102" /> +<hkern u1="Y" u2="ä" k="102" /> +<hkern u1="Y" u2="ã" k="102" /> +<hkern u1="Y" u2="â" k="102" /> +<hkern u1="Y" u2="á" k="102" /> +<hkern u1="Y" u2="à" k="102" /> +<hkern u1="Y" u2="Ø" k="41" /> +<hkern u1="Y" u2="Ö" k="41" /> +<hkern u1="Y" u2="Õ" k="41" /> +<hkern u1="Y" u2="Ô" k="41" /> +<hkern u1="Y" u2="Ó" k="41" /> +<hkern u1="Y" u2="Ò" k="41" /> +<hkern u1="Y" u2="Ç" k="41" /> +<hkern u1="Y" u2="Å" k="123" /> +<hkern u1="Y" u2="Ä" k="123" /> +<hkern u1="Y" u2="Ã" k="123" /> +<hkern u1="Y" u2="Â" k="123" /> +<hkern u1="Y" u2="Á" k="123" /> +<hkern u1="Y" u2="À" k="123" /> +<hkern u1="Y" u2="z" k="41" /> +<hkern u1="Y" u2="u" k="61" /> +<hkern u1="Y" u2="s" k="82" /> +<hkern u1="Y" u2="r" k="61" /> +<hkern u1="Y" u2="q" k="102" /> +<hkern u1="Y" u2="p" k="61" /> +<hkern u1="Y" u2="o" k="102" /> +<hkern u1="Y" u2="n" k="61" /> +<hkern u1="Y" u2="m" k="61" /> +<hkern u1="Y" u2="g" k="41" /> +<hkern u1="Y" u2="e" k="102" /> +<hkern u1="Y" u2="d" k="102" /> +<hkern u1="Y" u2="c" k="102" /> +<hkern u1="Y" u2="a" k="102" /> +<hkern u1="Y" u2="Q" k="41" /> +<hkern u1="Y" u2="O" k="41" /> +<hkern u1="Y" u2="G" k="41" /> +<hkern u1="Y" u2="C" k="41" /> +<hkern u1="Y" u2="A" k="123" /> +<hkern u1="Y" u2="?" k="-41" /> +<hkern u1="Y" u2="." k="123" /> +<hkern u1="Y" u2="," k="123" /> +<hkern u1="Z" u2="Œ" k="20" /> +<hkern u1="Z" u2="Ø" k="20" /> +<hkern u1="Z" u2="Ö" k="20" /> +<hkern u1="Z" u2="Õ" k="20" /> +<hkern u1="Z" u2="Ô" k="20" /> +<hkern u1="Z" u2="Ó" k="20" /> +<hkern u1="Z" u2="Ò" k="20" /> +<hkern u1="Z" u2="Ç" k="20" /> +<hkern u1="Z" u2="Q" k="20" /> +<hkern u1="Z" u2="O" k="20" /> +<hkern u1="Z" u2="G" k="20" /> +<hkern u1="Z" u2="C" k="20" /> +<hkern u1="[" u2="J" k="-184" /> +<hkern u1="a" u2="”" k="20" /> +<hkern u1="a" u2="’" k="20" /> +<hkern u1="a" u2="'" k="20" /> +<hkern u1="a" u2=""" k="20" /> +<hkern u1="b" u2="”" k="20" /> +<hkern u1="b" u2="’" k="20" /> +<hkern u1="b" u2="ý" k="41" /> +<hkern u1="b" u2="z" k="20" /> +<hkern u1="b" u2="y" k="41" /> +<hkern u1="b" u2="x" k="41" /> +<hkern u1="b" u2="w" k="41" /> +<hkern u1="b" u2="v" k="41" /> +<hkern u1="b" u2="'" k="20" /> +<hkern u1="b" u2=""" k="20" /> +<hkern u1="c" u2="”" k="-41" /> +<hkern u1="c" u2="’" k="-41" /> +<hkern u1="c" u2="'" k="-41" /> +<hkern u1="c" u2=""" k="-41" /> +<hkern u1="e" u2="”" k="20" /> +<hkern u1="e" u2="’" k="20" /> +<hkern u1="e" u2="ý" k="41" /> +<hkern u1="e" u2="z" k="20" /> +<hkern u1="e" u2="y" k="41" /> +<hkern u1="e" u2="x" k="41" /> +<hkern u1="e" u2="w" k="41" /> +<hkern u1="e" u2="v" k="41" /> +<hkern u1="e" u2="'" k="20" /> +<hkern u1="e" u2=""" k="20" /> +<hkern u1="f" u2="”" k="-123" /> +<hkern u1="f" u2="’" k="-123" /> +<hkern u1="f" u2="'" k="-123" /> +<hkern u1="f" u2=""" k="-123" /> +<hkern u1="h" u2="”" k="20" /> +<hkern u1="h" u2="’" k="20" /> +<hkern u1="h" u2="'" k="20" /> +<hkern u1="h" u2=""" k="20" /> +<hkern u1="k" u2="œ" k="41" /> +<hkern u1="k" u2="ø" k="41" /> +<hkern u1="k" u2="ö" k="41" /> +<hkern u1="k" u2="õ" k="41" /> +<hkern u1="k" u2="ô" k="41" /> +<hkern u1="k" u2="ó" k="41" /> +<hkern u1="k" u2="ò" k="41" /> +<hkern u1="k" u2="ë" k="41" /> +<hkern u1="k" u2="ê" k="41" /> +<hkern u1="k" u2="é" k="41" /> +<hkern u1="k" u2="è" k="41" /> +<hkern u1="k" u2="ç" k="41" /> +<hkern u1="k" u2="à" k="41" /> +<hkern u1="k" u2="q" k="41" /> +<hkern u1="k" u2="o" k="41" /> +<hkern u1="k" u2="e" k="41" /> +<hkern u1="k" u2="d" k="41" /> +<hkern u1="k" u2="c" k="41" /> +<hkern u1="m" u2="”" k="20" /> +<hkern u1="m" u2="’" k="20" /> +<hkern u1="m" u2="'" k="20" /> +<hkern u1="m" u2=""" k="20" /> +<hkern u1="n" u2="”" k="20" /> +<hkern u1="n" u2="’" k="20" /> +<hkern u1="n" u2="'" k="20" /> +<hkern u1="n" u2=""" k="20" /> +<hkern u1="o" u2="”" k="20" /> +<hkern u1="o" u2="’" k="20" /> +<hkern u1="o" u2="ý" k="41" /> +<hkern u1="o" u2="z" k="20" /> +<hkern u1="o" u2="y" k="41" /> +<hkern u1="o" u2="x" k="41" /> +<hkern u1="o" u2="w" k="41" /> +<hkern u1="o" u2="v" k="41" /> +<hkern u1="o" u2="'" k="20" /> +<hkern u1="o" u2=""" k="20" /> +<hkern u1="p" u2="”" k="20" /> +<hkern u1="p" u2="’" k="20" /> +<hkern u1="p" u2="ý" k="41" /> +<hkern u1="p" u2="z" k="20" /> +<hkern u1="p" u2="y" k="41" /> +<hkern u1="p" u2="x" k="41" /> +<hkern u1="p" u2="w" k="41" /> +<hkern u1="p" u2="v" k="41" /> +<hkern u1="p" u2="'" k="20" /> +<hkern u1="p" u2=""" k="20" /> +<hkern u1="r" u2="”" k="-82" /> +<hkern u1="r" u2="’" k="-82" /> +<hkern u1="r" u2="œ" k="41" /> +<hkern u1="r" u2="ø" k="41" /> +<hkern u1="r" u2="ö" k="41" /> +<hkern u1="r" u2="õ" k="41" /> +<hkern u1="r" u2="ô" k="41" /> +<hkern u1="r" u2="ó" k="41" /> +<hkern u1="r" u2="ò" k="41" /> +<hkern u1="r" u2="ë" k="41" /> +<hkern u1="r" u2="ê" k="41" /> +<hkern u1="r" u2="é" k="41" /> +<hkern u1="r" u2="è" k="41" /> +<hkern u1="r" u2="ç" k="41" /> +<hkern u1="r" u2="æ" k="41" /> +<hkern u1="r" u2="å" k="41" /> +<hkern u1="r" u2="ä" k="41" /> +<hkern u1="r" u2="ã" k="41" /> +<hkern u1="r" u2="â" k="41" /> +<hkern u1="r" u2="á" k="41" /> +<hkern u1="r" u2="à" k="41" /> +<hkern u1="r" u2="q" k="41" /> +<hkern u1="r" u2="o" k="41" /> +<hkern u1="r" u2="g" k="20" /> +<hkern u1="r" u2="e" k="41" /> +<hkern u1="r" u2="d" k="41" /> +<hkern u1="r" u2="c" k="41" /> +<hkern u1="r" u2="a" k="41" /> +<hkern u1="r" u2="'" k="-82" /> +<hkern u1="r" u2=""" k="-82" /> +<hkern u1="t" u2="”" k="-41" /> +<hkern u1="t" u2="’" k="-41" /> +<hkern u1="t" u2="'" k="-41" /> +<hkern u1="t" u2=""" k="-41" /> +<hkern u1="v" u2="„" k="82" /> +<hkern u1="v" u2="”" k="-82" /> +<hkern u1="v" u2="‚" k="82" /> +<hkern u1="v" u2="’" k="-82" /> +<hkern u1="v" u2="?" k="-41" /> +<hkern u1="v" u2="." k="82" /> +<hkern u1="v" u2="," k="82" /> +<hkern u1="v" u2="'" k="-82" /> +<hkern u1="v" u2=""" k="-82" /> +<hkern u1="w" u2="„" k="82" /> +<hkern u1="w" u2="”" k="-82" /> +<hkern u1="w" u2="‚" k="82" /> +<hkern u1="w" u2="’" k="-82" /> +<hkern u1="w" u2="?" k="-41" /> +<hkern u1="w" u2="." k="82" /> +<hkern u1="w" u2="," k="82" /> +<hkern u1="w" u2="'" k="-82" /> +<hkern u1="w" u2=""" k="-82" /> +<hkern u1="x" u2="œ" k="41" /> +<hkern u1="x" u2="ø" k="41" /> +<hkern u1="x" u2="ö" k="41" /> +<hkern u1="x" u2="õ" k="41" /> +<hkern u1="x" u2="ô" k="41" /> +<hkern u1="x" u2="ó" k="41" /> +<hkern u1="x" u2="ò" k="41" /> +<hkern u1="x" u2="ë" k="41" /> +<hkern u1="x" u2="ê" k="41" /> +<hkern u1="x" u2="é" k="41" /> +<hkern u1="x" u2="è" k="41" /> +<hkern u1="x" u2="ç" k="41" /> +<hkern u1="x" u2="à" k="41" /> +<hkern u1="x" u2="q" k="41" /> +<hkern u1="x" u2="o" k="41" /> +<hkern u1="x" u2="e" k="41" /> +<hkern u1="x" u2="d" k="41" /> +<hkern u1="x" u2="c" k="41" /> +<hkern u1="y" u2="„" k="82" /> +<hkern u1="y" u2="”" k="-82" /> +<hkern u1="y" u2="‚" k="82" /> +<hkern u1="y" u2="’" k="-82" /> +<hkern u1="y" u2="?" k="-41" /> +<hkern u1="y" u2="." k="82" /> +<hkern u1="y" u2="," k="82" /> +<hkern u1="y" u2="'" k="-82" /> +<hkern u1="y" u2=""" k="-82" /> +<hkern u1="{" u2="J" k="-184" /> +<hkern u1="À" u2="”" k="143" /> +<hkern u1="À" u2="’" k="143" /> +<hkern u1="À" u2="Ÿ" k="123" /> +<hkern u1="À" u2="Œ" k="41" /> +<hkern u1="À" u2="Ý" k="123" /> +<hkern u1="À" u2="Ø" k="41" /> +<hkern u1="À" u2="Ö" k="41" /> +<hkern u1="À" u2="Õ" k="41" /> +<hkern u1="À" u2="Ô" k="41" /> +<hkern u1="À" u2="Ó" k="41" /> +<hkern u1="À" u2="Ò" k="41" /> +<hkern u1="À" u2="Ç" k="41" /> +<hkern u1="À" u2="Y" k="123" /> +<hkern u1="À" u2="W" k="82" /> +<hkern u1="À" u2="V" k="82" /> +<hkern u1="À" u2="T" k="143" /> +<hkern u1="À" u2="Q" k="41" /> +<hkern u1="À" u2="O" k="41" /> +<hkern u1="À" u2="J" k="-266" /> +<hkern u1="À" u2="G" k="41" /> +<hkern u1="À" u2="C" k="41" /> +<hkern u1="À" u2="'" k="143" /> +<hkern u1="À" u2=""" k="143" /> +<hkern u1="Á" u2="”" k="143" /> +<hkern u1="Á" u2="’" k="143" /> +<hkern u1="Á" u2="Ÿ" k="123" /> +<hkern u1="Á" u2="Œ" k="41" /> +<hkern u1="Á" u2="Ý" k="123" /> +<hkern u1="Á" u2="Ø" k="41" /> +<hkern u1="Á" u2="Ö" k="41" /> +<hkern u1="Á" u2="Õ" k="41" /> +<hkern u1="Á" u2="Ô" k="41" /> +<hkern u1="Á" u2="Ó" k="41" /> +<hkern u1="Á" u2="Ò" k="41" /> +<hkern u1="Á" u2="Ç" k="41" /> +<hkern u1="Á" u2="Y" k="123" /> +<hkern u1="Á" u2="W" k="82" /> +<hkern u1="Á" u2="V" k="82" /> +<hkern u1="Á" u2="T" k="143" /> +<hkern u1="Á" u2="Q" k="41" /> +<hkern u1="Á" u2="O" k="41" /> +<hkern u1="Á" u2="J" k="-266" /> +<hkern u1="Á" u2="G" k="41" /> +<hkern u1="Á" u2="C" k="41" /> +<hkern u1="Á" u2="'" k="143" /> +<hkern u1="Á" u2=""" k="143" /> +<hkern u1="Â" u2="”" k="143" /> +<hkern u1="Â" u2="’" k="143" /> +<hkern u1="Â" u2="Ÿ" k="123" /> +<hkern u1="Â" u2="Œ" k="41" /> +<hkern u1="Â" u2="Ý" k="123" /> +<hkern u1="Â" u2="Ø" k="41" /> +<hkern u1="Â" u2="Ö" k="41" /> +<hkern u1="Â" u2="Õ" k="41" /> +<hkern u1="Â" u2="Ô" k="41" /> +<hkern u1="Â" u2="Ó" k="41" /> +<hkern u1="Â" u2="Ò" k="41" /> +<hkern u1="Â" u2="Ç" k="41" /> +<hkern u1="Â" u2="Y" k="123" /> +<hkern u1="Â" u2="W" k="82" /> +<hkern u1="Â" u2="V" k="82" /> +<hkern u1="Â" u2="T" k="143" /> +<hkern u1="Â" u2="Q" k="41" /> +<hkern u1="Â" u2="O" k="41" /> +<hkern u1="Â" u2="J" k="-266" /> +<hkern u1="Â" u2="G" k="41" /> +<hkern u1="Â" u2="C" k="41" /> +<hkern u1="Â" u2="'" k="143" /> +<hkern u1="Â" u2=""" k="143" /> +<hkern u1="Ã" u2="”" k="143" /> +<hkern u1="Ã" u2="’" k="143" /> +<hkern u1="Ã" u2="Ÿ" k="123" /> +<hkern u1="Ã" u2="Œ" k="41" /> +<hkern u1="Ã" u2="Ý" k="123" /> +<hkern u1="Ã" u2="Ø" k="41" /> +<hkern u1="Ã" u2="Ö" k="41" /> +<hkern u1="Ã" u2="Õ" k="41" /> +<hkern u1="Ã" u2="Ô" k="41" /> +<hkern u1="Ã" u2="Ó" k="41" /> +<hkern u1="Ã" u2="Ò" k="41" /> +<hkern u1="Ã" u2="Ç" k="41" /> +<hkern u1="Ã" u2="Y" k="123" /> +<hkern u1="Ã" u2="W" k="82" /> +<hkern u1="Ã" u2="V" k="82" /> +<hkern u1="Ã" u2="T" k="143" /> +<hkern u1="Ã" u2="Q" k="41" /> +<hkern u1="Ã" u2="O" k="41" /> +<hkern u1="Ã" u2="J" k="-266" /> +<hkern u1="Ã" u2="G" k="41" /> +<hkern u1="Ã" u2="C" k="41" /> +<hkern u1="Ã" u2="'" k="143" /> +<hkern u1="Ã" u2=""" k="143" /> +<hkern u1="Ä" u2="”" k="143" /> +<hkern u1="Ä" u2="’" k="143" /> +<hkern u1="Ä" u2="Ÿ" k="123" /> +<hkern u1="Ä" u2="Œ" k="41" /> +<hkern u1="Ä" u2="Ý" k="123" /> +<hkern u1="Ä" u2="Ø" k="41" /> +<hkern u1="Ä" u2="Ö" k="41" /> +<hkern u1="Ä" u2="Õ" k="41" /> +<hkern u1="Ä" u2="Ô" k="41" /> +<hkern u1="Ä" u2="Ó" k="41" /> +<hkern u1="Ä" u2="Ò" k="41" /> +<hkern u1="Ä" u2="Ç" k="41" /> +<hkern u1="Ä" u2="Y" k="123" /> +<hkern u1="Ä" u2="W" k="82" /> +<hkern u1="Ä" u2="V" k="82" /> +<hkern u1="Ä" u2="T" k="143" /> +<hkern u1="Ä" u2="Q" k="41" /> +<hkern u1="Ä" u2="O" k="41" /> +<hkern u1="Ä" u2="J" k="-266" /> +<hkern u1="Ä" u2="G" k="41" /> +<hkern u1="Ä" u2="C" k="41" /> +<hkern u1="Ä" u2="'" k="143" /> +<hkern u1="Ä" u2=""" k="143" /> +<hkern u1="Å" u2="”" k="143" /> +<hkern u1="Å" u2="’" k="143" /> +<hkern u1="Å" u2="Ÿ" k="123" /> +<hkern u1="Å" u2="Œ" k="41" /> +<hkern u1="Å" u2="Ý" k="123" /> +<hkern u1="Å" u2="Ø" k="41" /> +<hkern u1="Å" u2="Ö" k="41" /> +<hkern u1="Å" u2="Õ" k="41" /> +<hkern u1="Å" u2="Ô" k="41" /> +<hkern u1="Å" u2="Ó" k="41" /> +<hkern u1="Å" u2="Ò" k="41" /> +<hkern u1="Å" u2="Ç" k="41" /> +<hkern u1="Å" u2="Y" k="123" /> +<hkern u1="Å" u2="W" k="82" /> +<hkern u1="Å" u2="V" k="82" /> +<hkern u1="Å" u2="T" k="143" /> +<hkern u1="Å" u2="Q" k="41" /> +<hkern u1="Å" u2="O" k="41" /> +<hkern u1="Å" u2="J" k="-266" /> +<hkern u1="Å" u2="G" k="41" /> +<hkern u1="Å" u2="C" k="41" /> +<hkern u1="Å" u2="'" k="143" /> +<hkern u1="Å" u2=""" k="143" /> +<hkern u1="Æ" u2="J" k="-123" /> +<hkern u1="Ç" u2="Œ" k="41" /> +<hkern u1="Ç" u2="Ø" k="41" /> +<hkern u1="Ç" u2="Ö" k="41" /> +<hkern u1="Ç" u2="Õ" k="41" /> +<hkern u1="Ç" u2="Ô" k="41" /> +<hkern u1="Ç" u2="Ó" k="41" /> +<hkern u1="Ç" u2="Ò" k="41" /> +<hkern u1="Ç" u2="Ç" k="41" /> +<hkern u1="Ç" u2="Q" k="41" /> +<hkern u1="Ç" u2="O" k="41" /> +<hkern u1="Ç" u2="G" k="41" /> +<hkern u1="Ç" u2="C" k="41" /> +<hkern u1="È" u2="J" k="-123" /> +<hkern u1="É" u2="J" k="-123" /> +<hkern u1="Ê" u2="J" k="-123" /> +<hkern u1="Ë" u2="J" k="-123" /> +<hkern u1="Ð" u2="„" k="82" /> +<hkern u1="Ð" u2="‚" k="82" /> +<hkern u1="Ð" u2="Ÿ" k="20" /> +<hkern u1="Ð" u2="Ý" k="20" /> +<hkern u1="Ð" u2="Å" k="41" /> +<hkern u1="Ð" u2="Ä" k="41" /> +<hkern u1="Ð" u2="Ã" k="41" /> +<hkern u1="Ð" u2="Â" k="41" /> +<hkern u1="Ð" u2="Á" k="41" /> +<hkern u1="Ð" u2="À" k="41" /> +<hkern u1="Ð" u2="Z" k="20" /> +<hkern u1="Ð" u2="Y" k="20" /> +<hkern u1="Ð" u2="X" k="41" /> +<hkern u1="Ð" u2="W" k="20" /> +<hkern u1="Ð" u2="V" k="20" /> +<hkern u1="Ð" u2="T" k="61" /> +<hkern u1="Ð" u2="A" k="41" /> +<hkern u1="Ð" u2="." k="82" /> +<hkern u1="Ð" u2="," k="82" /> +<hkern u1="Ò" u2="„" k="82" /> +<hkern u1="Ò" u2="‚" k="82" /> +<hkern u1="Ò" u2="Ÿ" k="20" /> +<hkern u1="Ò" u2="Ý" k="20" /> +<hkern u1="Ò" u2="Å" k="41" /> +<hkern u1="Ò" u2="Ä" k="41" /> +<hkern u1="Ò" u2="Ã" k="41" /> +<hkern u1="Ò" u2="Â" k="41" /> +<hkern u1="Ò" u2="Á" k="41" /> +<hkern u1="Ò" u2="À" k="41" /> +<hkern u1="Ò" u2="Z" k="20" /> +<hkern u1="Ò" u2="Y" k="20" /> +<hkern u1="Ò" u2="X" k="41" /> +<hkern u1="Ò" u2="W" k="20" /> +<hkern u1="Ò" u2="V" k="20" /> +<hkern u1="Ò" u2="T" k="61" /> +<hkern u1="Ò" u2="A" k="41" /> +<hkern u1="Ò" u2="." k="82" /> +<hkern u1="Ò" u2="," k="82" /> +<hkern u1="Ó" u2="„" k="82" /> +<hkern u1="Ó" u2="‚" k="82" /> +<hkern u1="Ó" u2="Ÿ" k="20" /> +<hkern u1="Ó" u2="Ý" k="20" /> +<hkern u1="Ó" u2="Å" k="41" /> +<hkern u1="Ó" u2="Ä" k="41" /> +<hkern u1="Ó" u2="Ã" k="41" /> +<hkern u1="Ó" u2="Â" k="41" /> +<hkern u1="Ó" u2="Á" k="41" /> +<hkern u1="Ó" u2="À" k="41" /> +<hkern u1="Ó" u2="Z" k="20" /> +<hkern u1="Ó" u2="Y" k="20" /> +<hkern u1="Ó" u2="X" k="41" /> +<hkern u1="Ó" u2="W" k="20" /> +<hkern u1="Ó" u2="V" k="20" /> +<hkern u1="Ó" u2="T" k="61" /> +<hkern u1="Ó" u2="A" k="41" /> +<hkern u1="Ó" u2="." k="82" /> +<hkern u1="Ó" u2="," k="82" /> +<hkern u1="Ô" u2="„" k="82" /> +<hkern u1="Ô" u2="‚" k="82" /> +<hkern u1="Ô" u2="Ÿ" k="20" /> +<hkern u1="Ô" u2="Ý" k="20" /> +<hkern u1="Ô" u2="Å" k="41" /> +<hkern u1="Ô" u2="Ä" k="41" /> +<hkern u1="Ô" u2="Ã" k="41" /> +<hkern u1="Ô" u2="Â" k="41" /> +<hkern u1="Ô" u2="Á" k="41" /> +<hkern u1="Ô" u2="À" k="41" /> +<hkern u1="Ô" u2="Z" k="20" /> +<hkern u1="Ô" u2="Y" k="20" /> +<hkern u1="Ô" u2="X" k="41" /> +<hkern u1="Ô" u2="W" k="20" /> +<hkern u1="Ô" u2="V" k="20" /> +<hkern u1="Ô" u2="T" k="61" /> +<hkern u1="Ô" u2="A" k="41" /> +<hkern u1="Ô" u2="." k="82" /> +<hkern u1="Ô" u2="," k="82" /> +<hkern u1="Õ" u2="„" k="82" /> +<hkern u1="Õ" u2="‚" k="82" /> +<hkern u1="Õ" u2="Ÿ" k="20" /> +<hkern u1="Õ" u2="Ý" k="20" /> +<hkern u1="Õ" u2="Å" k="41" /> +<hkern u1="Õ" u2="Ä" k="41" /> +<hkern u1="Õ" u2="Ã" k="41" /> +<hkern u1="Õ" u2="Â" k="41" /> +<hkern u1="Õ" u2="Á" k="41" /> +<hkern u1="Õ" u2="À" k="41" /> +<hkern u1="Õ" u2="Z" k="20" /> +<hkern u1="Õ" u2="Y" k="20" /> +<hkern u1="Õ" u2="X" k="41" /> +<hkern u1="Õ" u2="W" k="20" /> +<hkern u1="Õ" u2="V" k="20" /> +<hkern u1="Õ" u2="T" k="61" /> +<hkern u1="Õ" u2="A" k="41" /> +<hkern u1="Õ" u2="." k="82" /> +<hkern u1="Õ" u2="," k="82" /> +<hkern u1="Ö" u2="„" k="82" /> +<hkern u1="Ö" u2="‚" k="82" /> +<hkern u1="Ö" u2="Ÿ" k="20" /> +<hkern u1="Ö" u2="Ý" k="20" /> +<hkern u1="Ö" u2="Å" k="41" /> +<hkern u1="Ö" u2="Ä" k="41" /> +<hkern u1="Ö" u2="Ã" k="41" /> +<hkern u1="Ö" u2="Â" k="41" /> +<hkern u1="Ö" u2="Á" k="41" /> +<hkern u1="Ö" u2="À" k="41" /> +<hkern u1="Ö" u2="Z" k="20" /> +<hkern u1="Ö" u2="Y" k="20" /> +<hkern u1="Ö" u2="X" k="41" /> +<hkern u1="Ö" u2="W" k="20" /> +<hkern u1="Ö" u2="V" k="20" /> +<hkern u1="Ö" u2="T" k="61" /> +<hkern u1="Ö" u2="A" k="41" /> +<hkern u1="Ö" u2="." k="82" /> +<hkern u1="Ö" u2="," k="82" /> +<hkern u1="Ø" u2="„" k="82" /> +<hkern u1="Ø" u2="‚" k="82" /> +<hkern u1="Ø" u2="Ÿ" k="20" /> +<hkern u1="Ø" u2="Ý" k="20" /> +<hkern u1="Ø" u2="Å" k="41" /> +<hkern u1="Ø" u2="Ä" k="41" /> +<hkern u1="Ø" u2="Ã" k="41" /> +<hkern u1="Ø" u2="Â" k="41" /> +<hkern u1="Ø" u2="Á" k="41" /> +<hkern u1="Ø" u2="À" k="41" /> +<hkern u1="Ø" u2="Z" k="20" /> +<hkern u1="Ø" u2="Y" k="20" /> +<hkern u1="Ø" u2="X" k="41" /> +<hkern u1="Ø" u2="W" k="20" /> +<hkern u1="Ø" u2="V" k="20" /> +<hkern u1="Ø" u2="T" k="61" /> +<hkern u1="Ø" u2="A" k="41" /> +<hkern u1="Ø" u2="." k="82" /> +<hkern u1="Ø" u2="," k="82" /> +<hkern u1="Ù" u2="„" k="41" /> +<hkern u1="Ù" u2="‚" k="41" /> +<hkern u1="Ù" u2="Å" k="20" /> +<hkern u1="Ù" u2="Ä" k="20" /> +<hkern u1="Ù" u2="Ã" k="20" /> +<hkern u1="Ù" u2="Â" k="20" /> +<hkern u1="Ù" u2="Á" k="20" /> +<hkern u1="Ù" u2="À" k="20" /> +<hkern u1="Ù" u2="A" k="20" /> +<hkern u1="Ù" u2="." k="41" /> +<hkern u1="Ù" u2="," k="41" /> +<hkern u1="Ú" u2="„" k="41" /> +<hkern u1="Ú" u2="‚" k="41" /> +<hkern u1="Ú" u2="Å" k="20" /> +<hkern u1="Ú" u2="Ä" k="20" /> +<hkern u1="Ú" u2="Ã" k="20" /> +<hkern u1="Ú" u2="Â" k="20" /> +<hkern u1="Ú" u2="Á" k="20" /> +<hkern u1="Ú" u2="À" k="20" /> +<hkern u1="Ú" u2="A" k="20" /> +<hkern u1="Ú" u2="." k="41" /> +<hkern u1="Ú" u2="," k="41" /> +<hkern u1="Û" u2="„" k="41" /> +<hkern u1="Û" u2="‚" k="41" /> +<hkern u1="Û" u2="Å" k="20" /> +<hkern u1="Û" u2="Ä" k="20" /> +<hkern u1="Û" u2="Ã" k="20" /> +<hkern u1="Û" u2="Â" k="20" /> +<hkern u1="Û" u2="Á" k="20" /> +<hkern u1="Û" u2="À" k="20" /> +<hkern u1="Û" u2="A" k="20" /> +<hkern u1="Û" u2="." k="41" /> +<hkern u1="Û" u2="," k="41" /> +<hkern u1="Ü" u2="„" k="41" /> +<hkern u1="Ü" u2="‚" k="41" /> +<hkern u1="Ü" u2="Å" k="20" /> +<hkern u1="Ü" u2="Ä" k="20" /> +<hkern u1="Ü" u2="Ã" k="20" /> +<hkern u1="Ü" u2="Â" k="20" /> +<hkern u1="Ü" u2="Á" k="20" /> +<hkern u1="Ü" u2="À" k="20" /> +<hkern u1="Ü" u2="A" k="20" /> +<hkern u1="Ü" u2="." k="41" /> +<hkern u1="Ü" u2="," k="41" /> +<hkern u1="Ý" u2="„" k="123" /> +<hkern u1="Ý" u2="‚" k="123" /> +<hkern u1="Ý" u2="œ" k="102" /> +<hkern u1="Ý" u2="Œ" k="41" /> +<hkern u1="Ý" u2="ü" k="61" /> +<hkern u1="Ý" u2="û" k="61" /> +<hkern u1="Ý" u2="ú" k="61" /> +<hkern u1="Ý" u2="ù" k="61" /> +<hkern u1="Ý" u2="ø" k="102" /> +<hkern u1="Ý" u2="ö" k="102" /> +<hkern u1="Ý" u2="õ" k="102" /> +<hkern u1="Ý" u2="ô" k="102" /> +<hkern u1="Ý" u2="ó" k="102" /> +<hkern u1="Ý" u2="ò" k="102" /> +<hkern u1="Ý" u2="ë" k="102" /> +<hkern u1="Ý" u2="ê" k="102" /> +<hkern u1="Ý" u2="é" k="102" /> +<hkern u1="Ý" u2="è" k="102" /> +<hkern u1="Ý" u2="ç" k="102" /> +<hkern u1="Ý" u2="æ" k="102" /> +<hkern u1="Ý" u2="å" k="102" /> +<hkern u1="Ý" u2="ä" k="102" /> +<hkern u1="Ý" u2="ã" k="102" /> +<hkern u1="Ý" u2="â" k="102" /> +<hkern u1="Ý" u2="á" k="102" /> +<hkern u1="Ý" u2="à" k="102" /> +<hkern u1="Ý" u2="Ø" k="41" /> +<hkern u1="Ý" u2="Ö" k="41" /> +<hkern u1="Ý" u2="Õ" k="41" /> +<hkern u1="Ý" u2="Ô" k="41" /> +<hkern u1="Ý" u2="Ó" k="41" /> +<hkern u1="Ý" u2="Ò" k="41" /> +<hkern u1="Ý" u2="Ç" k="41" /> +<hkern u1="Ý" u2="Å" k="123" /> +<hkern u1="Ý" u2="Ä" k="123" /> +<hkern u1="Ý" u2="Ã" k="123" /> +<hkern u1="Ý" u2="Â" k="123" /> +<hkern u1="Ý" u2="Á" k="123" /> +<hkern u1="Ý" u2="À" k="123" /> +<hkern u1="Ý" u2="z" k="41" /> +<hkern u1="Ý" u2="u" k="61" /> +<hkern u1="Ý" u2="s" k="82" /> +<hkern u1="Ý" u2="r" k="61" /> +<hkern u1="Ý" u2="q" k="102" /> +<hkern u1="Ý" u2="p" k="61" /> +<hkern u1="Ý" u2="o" k="102" /> +<hkern u1="Ý" u2="n" k="61" /> +<hkern u1="Ý" u2="m" k="61" /> +<hkern u1="Ý" u2="g" k="41" /> +<hkern u1="Ý" u2="e" k="102" /> +<hkern u1="Ý" u2="d" k="102" /> +<hkern u1="Ý" u2="c" k="102" /> +<hkern u1="Ý" u2="a" k="102" /> +<hkern u1="Ý" u2="Q" k="41" /> +<hkern u1="Ý" u2="O" k="41" /> +<hkern u1="Ý" u2="G" k="41" /> +<hkern u1="Ý" u2="C" k="41" /> +<hkern u1="Ý" u2="A" k="123" /> +<hkern u1="Ý" u2="?" k="-41" /> +<hkern u1="Ý" u2="." k="123" /> +<hkern u1="Ý" u2="," k="123" /> +<hkern u1="Þ" u2="„" k="266" /> +<hkern u1="Þ" u2="‚" k="266" /> +<hkern u1="Þ" u2="Å" k="102" /> +<hkern u1="Þ" u2="Ä" k="102" /> +<hkern u1="Þ" u2="Ã" k="102" /> +<hkern u1="Þ" u2="Â" k="102" /> +<hkern u1="Þ" u2="Á" k="102" /> +<hkern u1="Þ" u2="À" k="102" /> +<hkern u1="Þ" u2="Z" k="20" /> +<hkern u1="Þ" u2="X" k="41" /> +<hkern u1="Þ" u2="A" k="102" /> +<hkern u1="Þ" u2="." k="266" /> +<hkern u1="Þ" u2="," k="266" /> +<hkern u1="à" u2="”" k="20" /> +<hkern u1="à" u2="’" k="20" /> +<hkern u1="à" u2="'" k="20" /> +<hkern u1="à" u2=""" k="20" /> +<hkern u1="á" u2="”" k="20" /> +<hkern u1="á" u2="’" k="20" /> +<hkern u1="á" u2="'" k="20" /> +<hkern u1="á" u2=""" k="20" /> +<hkern u1="â" u2="”" k="20" /> +<hkern u1="â" u2="’" k="20" /> +<hkern u1="â" u2="'" k="20" /> +<hkern u1="â" u2=""" k="20" /> +<hkern u1="ã" u2="”" k="20" /> +<hkern u1="ã" u2="’" k="20" /> +<hkern u1="ã" u2="'" k="20" /> +<hkern u1="ã" u2=""" k="20" /> +<hkern u1="ä" u2="”" k="20" /> +<hkern u1="ä" u2="’" k="20" /> +<hkern u1="ä" u2="'" k="20" /> +<hkern u1="ä" u2=""" k="20" /> +<hkern u1="å" u2="”" k="20" /> +<hkern u1="å" u2="’" k="20" /> +<hkern u1="å" u2="'" k="20" /> +<hkern u1="å" u2=""" k="20" /> +<hkern u1="è" u2="”" k="20" /> +<hkern u1="è" u2="’" k="20" /> +<hkern u1="è" u2="ý" k="41" /> +<hkern u1="è" u2="z" k="20" /> +<hkern u1="è" u2="y" k="41" /> +<hkern u1="è" u2="x" k="41" /> +<hkern u1="è" u2="w" k="41" /> +<hkern u1="è" u2="v" k="41" /> +<hkern u1="è" u2="'" k="20" /> +<hkern u1="è" u2=""" k="20" /> +<hkern u1="é" u2="”" k="20" /> +<hkern u1="é" u2="’" k="20" /> +<hkern u1="é" u2="ý" k="41" /> +<hkern u1="é" u2="z" k="20" /> +<hkern u1="é" u2="y" k="41" /> +<hkern u1="é" u2="x" k="41" /> +<hkern u1="é" u2="w" k="41" /> +<hkern u1="é" u2="v" k="41" /> +<hkern u1="é" u2="'" k="20" /> +<hkern u1="é" u2=""" k="20" /> +<hkern u1="ê" u2="”" k="20" /> +<hkern u1="ê" u2="’" k="20" /> +<hkern u1="ê" u2="ý" k="41" /> +<hkern u1="ê" u2="z" k="20" /> +<hkern u1="ê" u2="y" k="41" /> +<hkern u1="ê" u2="x" k="41" /> +<hkern u1="ê" u2="w" k="41" /> +<hkern u1="ê" u2="v" k="41" /> +<hkern u1="ê" u2="'" k="20" /> +<hkern u1="ê" u2=""" k="20" /> +<hkern u1="ë" u2="”" k="20" /> +<hkern u1="ë" u2="’" k="20" /> +<hkern u1="ë" u2="ý" k="41" /> +<hkern u1="ë" u2="z" k="20" /> +<hkern u1="ë" u2="y" k="41" /> +<hkern u1="ë" u2="x" k="41" /> +<hkern u1="ë" u2="w" k="41" /> +<hkern u1="ë" u2="v" k="41" /> +<hkern u1="ë" u2="'" k="20" /> +<hkern u1="ë" u2=""" k="20" /> +<hkern u1="ð" u2="”" k="20" /> +<hkern u1="ð" u2="’" k="20" /> +<hkern u1="ð" u2="ý" k="41" /> +<hkern u1="ð" u2="z" k="20" /> +<hkern u1="ð" u2="y" k="41" /> +<hkern u1="ð" u2="x" k="41" /> +<hkern u1="ð" u2="w" k="41" /> +<hkern u1="ð" u2="v" k="41" /> +<hkern u1="ð" u2="'" k="20" /> +<hkern u1="ð" u2=""" k="20" /> +<hkern u1="ò" u2="”" k="20" /> +<hkern u1="ò" u2="’" k="20" /> +<hkern u1="ò" u2="ý" k="41" /> +<hkern u1="ò" u2="z" k="20" /> +<hkern u1="ò" u2="y" k="41" /> +<hkern u1="ò" u2="x" k="41" /> +<hkern u1="ò" u2="w" k="41" /> +<hkern u1="ò" u2="v" k="41" /> +<hkern u1="ò" u2="'" k="20" /> +<hkern u1="ò" u2=""" k="20" /> +<hkern u1="ó" u2="”" k="20" /> +<hkern u1="ó" u2="’" k="20" /> +<hkern u1="ó" u2="ý" k="41" /> +<hkern u1="ó" u2="z" k="20" /> +<hkern u1="ó" u2="y" k="41" /> +<hkern u1="ó" u2="x" k="41" /> +<hkern u1="ó" u2="w" k="41" /> +<hkern u1="ó" u2="v" k="41" /> +<hkern u1="ó" u2="'" k="20" /> +<hkern u1="ó" u2=""" k="20" /> +<hkern u1="ô" u2="”" k="20" /> +<hkern u1="ô" u2="’" k="20" /> +<hkern u1="ô" u2="ý" k="41" /> +<hkern u1="ô" u2="z" k="20" /> +<hkern u1="ô" u2="y" k="41" /> +<hkern u1="ô" u2="x" k="41" /> +<hkern u1="ô" u2="w" k="41" /> +<hkern u1="ô" u2="v" k="41" /> +<hkern u1="ô" u2="'" k="20" /> +<hkern u1="ô" u2=""" k="20" /> +<hkern u1="ö" u2="”" k="41" /> +<hkern u1="ö" u2="’" k="41" /> +<hkern u1="ö" u2="'" k="41" /> +<hkern u1="ö" u2=""" k="41" /> +<hkern u1="ø" u2="”" k="20" /> +<hkern u1="ø" u2="’" k="20" /> +<hkern u1="ø" u2="ý" k="41" /> +<hkern u1="ø" u2="z" k="20" /> +<hkern u1="ø" u2="y" k="41" /> +<hkern u1="ø" u2="x" k="41" /> +<hkern u1="ø" u2="w" k="41" /> +<hkern u1="ø" u2="v" k="41" /> +<hkern u1="ø" u2="'" k="20" /> +<hkern u1="ø" u2=""" k="20" /> +<hkern u1="ý" u2="„" k="82" /> +<hkern u1="ý" u2="”" k="-82" /> +<hkern u1="ý" u2="‚" k="82" /> +<hkern u1="ý" u2="’" k="-82" /> +<hkern u1="ý" u2="?" k="-41" /> +<hkern u1="ý" u2="." k="82" /> +<hkern u1="ý" u2="," k="82" /> +<hkern u1="ý" u2="'" k="-82" /> +<hkern u1="ý" u2=""" k="-82" /> +<hkern u1="þ" u2="”" k="20" /> +<hkern u1="þ" u2="’" k="20" /> +<hkern u1="þ" u2="ý" k="41" /> +<hkern u1="þ" u2="z" k="20" /> +<hkern u1="þ" u2="y" k="41" /> +<hkern u1="þ" u2="x" k="41" /> +<hkern u1="þ" u2="w" k="41" /> +<hkern u1="þ" u2="v" k="41" /> +<hkern u1="þ" u2="'" k="20" /> +<hkern u1="þ" u2=""" k="20" /> +<hkern u1="ÿ" u2="„" k="82" /> +<hkern u1="ÿ" u2="”" k="-82" /> +<hkern u1="ÿ" u2="‚" k="82" /> +<hkern u1="ÿ" u2="’" k="-82" /> +<hkern u1="ÿ" u2="?" k="-41" /> +<hkern u1="ÿ" u2="." k="82" /> +<hkern u1="ÿ" u2="," k="82" /> +<hkern u1="ÿ" u2="'" k="-82" /> +<hkern u1="ÿ" u2=""" k="-82" /> +<hkern u1="Œ" u2="J" k="-123" /> +<hkern u1="Ÿ" u2="„" k="123" /> +<hkern u1="Ÿ" u2="‚" k="123" /> +<hkern u1="Ÿ" u2="œ" k="102" /> +<hkern u1="Ÿ" u2="Œ" k="41" /> +<hkern u1="Ÿ" u2="ü" k="61" /> +<hkern u1="Ÿ" u2="û" k="61" /> +<hkern u1="Ÿ" u2="ú" k="61" /> +<hkern u1="Ÿ" u2="ù" k="61" /> +<hkern u1="Ÿ" u2="ø" k="102" /> +<hkern u1="Ÿ" u2="ö" k="102" /> +<hkern u1="Ÿ" u2="õ" k="102" /> +<hkern u1="Ÿ" u2="ô" k="102" /> +<hkern u1="Ÿ" u2="ó" k="102" /> +<hkern u1="Ÿ" u2="ò" k="102" /> +<hkern u1="Ÿ" u2="ë" k="102" /> +<hkern u1="Ÿ" u2="ê" k="102" /> +<hkern u1="Ÿ" u2="é" k="102" /> +<hkern u1="Ÿ" u2="è" k="102" /> +<hkern u1="Ÿ" u2="ç" k="102" /> +<hkern u1="Ÿ" u2="æ" k="102" /> +<hkern u1="Ÿ" u2="å" k="102" /> +<hkern u1="Ÿ" u2="ä" k="102" /> +<hkern u1="Ÿ" u2="ã" k="102" /> +<hkern u1="Ÿ" u2="â" k="102" /> +<hkern u1="Ÿ" u2="á" k="102" /> +<hkern u1="Ÿ" u2="à" k="102" /> +<hkern u1="Ÿ" u2="Ø" k="41" /> +<hkern u1="Ÿ" u2="Ö" k="41" /> +<hkern u1="Ÿ" u2="Õ" k="41" /> +<hkern u1="Ÿ" u2="Ô" k="41" /> +<hkern u1="Ÿ" u2="Ó" k="41" /> +<hkern u1="Ÿ" u2="Ò" k="41" /> +<hkern u1="Ÿ" u2="Ç" k="41" /> +<hkern u1="Ÿ" u2="Å" k="123" /> +<hkern u1="Ÿ" u2="Ä" k="123" /> +<hkern u1="Ÿ" u2="Ã" k="123" /> +<hkern u1="Ÿ" u2="Â" k="123" /> +<hkern u1="Ÿ" u2="Á" k="123" /> +<hkern u1="Ÿ" u2="À" k="123" /> +<hkern u1="Ÿ" u2="z" k="41" /> +<hkern u1="Ÿ" u2="u" k="61" /> +<hkern u1="Ÿ" u2="s" k="82" /> +<hkern u1="Ÿ" u2="r" k="61" /> +<hkern u1="Ÿ" u2="q" k="102" /> +<hkern u1="Ÿ" u2="p" k="61" /> +<hkern u1="Ÿ" u2="o" k="102" /> +<hkern u1="Ÿ" u2="n" k="61" /> +<hkern u1="Ÿ" u2="m" k="61" /> +<hkern u1="Ÿ" u2="g" k="41" /> +<hkern u1="Ÿ" u2="e" k="102" /> +<hkern u1="Ÿ" u2="d" k="102" /> +<hkern u1="Ÿ" u2="c" k="102" /> +<hkern u1="Ÿ" u2="a" k="102" /> +<hkern u1="Ÿ" u2="Q" k="41" /> +<hkern u1="Ÿ" u2="O" k="41" /> +<hkern u1="Ÿ" u2="G" k="41" /> +<hkern u1="Ÿ" u2="C" k="41" /> +<hkern u1="Ÿ" u2="A" k="123" /> +<hkern u1="Ÿ" u2="?" k="-41" /> +<hkern u1="Ÿ" u2="." k="123" /> +<hkern u1="Ÿ" u2="," k="123" /> +<hkern u1="–" u2="T" k="82" /> +<hkern u1="—" u2="T" k="82" /> +<hkern u1="‘" u2="Ÿ" k="-20" /> +<hkern u1="‘" u2="œ" k="123" /> +<hkern u1="‘" u2="ü" k="61" /> +<hkern u1="‘" u2="û" k="61" /> +<hkern u1="‘" u2="ú" k="61" /> +<hkern u1="‘" u2="ù" k="61" /> +<hkern u1="‘" u2="ø" k="123" /> +<hkern u1="‘" u2="ö" k="123" /> +<hkern u1="‘" u2="õ" k="123" /> +<hkern u1="‘" u2="ô" k="123" /> +<hkern u1="‘" u2="ó" k="123" /> +<hkern u1="‘" u2="ò" k="123" /> +<hkern u1="‘" u2="ë" k="123" /> +<hkern u1="‘" u2="ê" k="123" /> +<hkern u1="‘" u2="é" k="123" /> +<hkern u1="‘" u2="è" k="123" /> +<hkern u1="‘" u2="ç" k="123" /> +<hkern u1="‘" u2="æ" k="82" /> +<hkern u1="‘" u2="å" k="82" /> +<hkern u1="‘" u2="ä" k="82" /> +<hkern u1="‘" u2="ã" k="82" /> +<hkern u1="‘" u2="â" k="82" /> +<hkern u1="‘" u2="á" k="82" /> +<hkern u1="‘" u2="à" k="123" /> +<hkern u1="‘" u2="Ý" k="-20" /> +<hkern u1="‘" u2="Å" k="143" /> +<hkern u1="‘" u2="Ä" k="143" /> +<hkern u1="‘" u2="Ã" k="143" /> +<hkern u1="‘" u2="Â" k="143" /> +<hkern u1="‘" u2="Á" k="143" /> +<hkern u1="‘" u2="À" k="143" /> +<hkern u1="‘" u2="u" k="61" /> +<hkern u1="‘" u2="s" k="61" /> +<hkern u1="‘" u2="r" k="61" /> +<hkern u1="‘" u2="q" k="123" /> +<hkern u1="‘" u2="p" k="61" /> +<hkern u1="‘" u2="o" k="123" /> +<hkern u1="‘" u2="n" k="61" /> +<hkern u1="‘" u2="m" k="61" /> +<hkern u1="‘" u2="g" k="61" /> +<hkern u1="‘" u2="e" k="123" /> +<hkern u1="‘" u2="d" k="123" /> +<hkern u1="‘" u2="c" k="123" /> +<hkern u1="‘" u2="a" k="82" /> +<hkern u1="‘" u2="Y" k="-20" /> +<hkern u1="‘" u2="W" k="-41" /> +<hkern u1="‘" u2="V" k="-41" /> +<hkern u1="‘" u2="T" k="-41" /> +<hkern u1="‘" u2="A" k="143" /> +<hkern u1="’" u2="Ÿ" k="-20" /> +<hkern u1="’" u2="œ" k="123" /> +<hkern u1="’" u2="ü" k="61" /> +<hkern u1="’" u2="û" k="61" /> +<hkern u1="’" u2="ú" k="61" /> +<hkern u1="’" u2="ù" k="61" /> +<hkern u1="’" u2="ø" k="123" /> +<hkern u1="’" u2="ö" k="123" /> +<hkern u1="’" u2="õ" k="123" /> +<hkern u1="’" u2="ô" k="123" /> +<hkern u1="’" u2="ó" k="123" /> +<hkern u1="’" u2="ò" k="123" /> +<hkern u1="’" u2="ë" k="123" /> +<hkern u1="’" u2="ê" k="123" /> +<hkern u1="’" u2="é" k="123" /> +<hkern u1="’" u2="è" k="123" /> +<hkern u1="’" u2="ç" k="123" /> +<hkern u1="’" u2="æ" k="82" /> +<hkern u1="’" u2="å" k="82" /> +<hkern u1="’" u2="ä" k="82" /> +<hkern u1="’" u2="ã" k="82" /> +<hkern u1="’" u2="â" k="82" /> +<hkern u1="’" u2="á" k="82" /> +<hkern u1="’" u2="à" k="123" /> +<hkern u1="’" u2="Ý" k="-20" /> +<hkern u1="’" u2="Å" k="143" /> +<hkern u1="’" u2="Ä" k="143" /> +<hkern u1="’" u2="Ã" k="143" /> +<hkern u1="’" u2="Â" k="143" /> +<hkern u1="’" u2="Á" k="143" /> +<hkern u1="’" u2="À" k="143" /> +<hkern u1="’" u2="u" k="61" /> +<hkern u1="’" u2="s" k="61" /> +<hkern u1="’" u2="r" k="61" /> +<hkern u1="’" u2="q" k="123" /> +<hkern u1="’" u2="p" k="61" /> +<hkern u1="’" u2="o" k="123" /> +<hkern u1="’" u2="n" k="61" /> +<hkern u1="’" u2="m" k="61" /> +<hkern u1="’" u2="g" k="61" /> +<hkern u1="’" u2="e" k="123" /> +<hkern u1="’" u2="d" k="123" /> +<hkern u1="’" u2="c" k="123" /> +<hkern u1="’" u2="a" k="82" /> +<hkern u1="’" u2="Y" k="-20" /> +<hkern u1="’" u2="W" k="-41" /> +<hkern u1="’" u2="V" k="-41" /> +<hkern u1="’" u2="T" k="-41" /> +<hkern u1="’" u2="A" k="143" /> +<hkern u1="‚" u2="Ÿ" k="123" /> +<hkern u1="‚" u2="Œ" k="102" /> +<hkern u1="‚" u2="Ý" k="123" /> +<hkern u1="‚" u2="Ü" k="41" /> +<hkern u1="‚" u2="Û" k="41" /> +<hkern u1="‚" u2="Ú" k="41" /> +<hkern u1="‚" u2="Ù" k="41" /> +<hkern u1="‚" u2="Ø" k="102" /> +<hkern u1="‚" u2="Ö" k="102" /> +<hkern u1="‚" u2="Õ" k="102" /> +<hkern u1="‚" u2="Ô" k="102" /> +<hkern u1="‚" u2="Ó" k="102" /> +<hkern u1="‚" u2="Ò" k="102" /> +<hkern u1="‚" u2="Ç" k="102" /> +<hkern u1="‚" u2="Y" k="123" /> +<hkern u1="‚" u2="W" k="123" /> +<hkern u1="‚" u2="V" k="123" /> +<hkern u1="‚" u2="U" k="41" /> +<hkern u1="‚" u2="T" k="143" /> +<hkern u1="‚" u2="Q" k="102" /> +<hkern u1="‚" u2="O" k="102" /> +<hkern u1="‚" u2="G" k="102" /> +<hkern u1="‚" u2="C" k="102" /> +<hkern u1="“" u2="Ÿ" k="-20" /> +<hkern u1="“" u2="œ" k="123" /> +<hkern u1="“" u2="ü" k="61" /> +<hkern u1="“" u2="û" k="61" /> +<hkern u1="“" u2="ú" k="61" /> +<hkern u1="“" u2="ù" k="61" /> +<hkern u1="“" u2="ø" k="123" /> +<hkern u1="“" u2="ö" k="123" /> +<hkern u1="“" u2="õ" k="123" /> +<hkern u1="“" u2="ô" k="123" /> +<hkern u1="“" u2="ó" k="123" /> +<hkern u1="“" u2="ò" k="123" /> +<hkern u1="“" u2="ë" k="123" /> +<hkern u1="“" u2="ê" k="123" /> +<hkern u1="“" u2="é" k="123" /> +<hkern u1="“" u2="è" k="123" /> +<hkern u1="“" u2="ç" k="123" /> +<hkern u1="“" u2="æ" k="82" /> +<hkern u1="“" u2="å" k="82" /> +<hkern u1="“" u2="ä" k="82" /> +<hkern u1="“" u2="ã" k="82" /> +<hkern u1="“" u2="â" k="82" /> +<hkern u1="“" u2="á" k="82" /> +<hkern u1="“" u2="à" k="123" /> +<hkern u1="“" u2="Ý" k="-20" /> +<hkern u1="“" u2="Å" k="143" /> +<hkern u1="“" u2="Ä" k="143" /> +<hkern u1="“" u2="Ã" k="143" /> +<hkern u1="“" u2="Â" k="143" /> +<hkern u1="“" u2="Á" k="143" /> +<hkern u1="“" u2="À" k="143" /> +<hkern u1="“" u2="u" k="61" /> +<hkern u1="“" u2="s" k="61" /> +<hkern u1="“" u2="r" k="61" /> +<hkern u1="“" u2="q" k="123" /> +<hkern u1="“" u2="p" k="61" /> +<hkern u1="“" u2="o" k="123" /> +<hkern u1="“" u2="n" k="61" /> +<hkern u1="“" u2="m" k="61" /> +<hkern u1="“" u2="g" k="61" /> +<hkern u1="“" u2="e" k="123" /> +<hkern u1="“" u2="d" k="123" /> +<hkern u1="“" u2="c" k="123" /> +<hkern u1="“" u2="a" k="82" /> +<hkern u1="“" u2="Y" k="-20" /> +<hkern u1="“" u2="W" k="-41" /> +<hkern u1="“" u2="V" k="-41" /> +<hkern u1="“" u2="T" k="-41" /> +<hkern u1="“" u2="A" k="143" /> +<hkern u1="„" u2="Ÿ" k="123" /> +<hkern u1="„" u2="Œ" k="102" /> +<hkern u1="„" u2="Ý" k="123" /> +<hkern u1="„" u2="Ü" k="41" /> +<hkern u1="„" u2="Û" k="41" /> +<hkern u1="„" u2="Ú" k="41" /> +<hkern u1="„" u2="Ù" k="41" /> +<hkern u1="„" u2="Ø" k="102" /> +<hkern u1="„" u2="Ö" k="102" /> +<hkern u1="„" u2="Õ" k="102" /> +<hkern u1="„" u2="Ô" k="102" /> +<hkern u1="„" u2="Ó" k="102" /> +<hkern u1="„" u2="Ò" k="102" /> +<hkern u1="„" u2="Ç" k="102" /> +<hkern u1="„" u2="Y" k="123" /> +<hkern u1="„" u2="W" k="123" /> +<hkern u1="„" u2="V" k="123" /> +<hkern u1="„" u2="U" k="41" /> +<hkern u1="„" u2="T" k="143" /> +<hkern u1="„" u2="Q" k="102" /> +<hkern u1="„" u2="O" k="102" /> +<hkern u1="„" u2="G" k="102" /> +<hkern u1="„" u2="C" k="102" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.woff b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000..ed760c0 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-BoldItalic-webfont.woff Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.eot b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.eot new file mode 100644 index 0000000..0c8a0ae --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.eot Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.svg b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.svg new file mode 100644 index 0000000..e1075dc --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.svg @@ -0,0 +1,1830 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="open_sansitalic" horiz-adv-x="1128" > +<font-face units-per-em="2048" ascent="1638" descent="-410" /> +<missing-glyph horiz-adv-x="532" /> +<glyph unicode="fi" horiz-adv-x="1165" d="M0 0zM-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87zM870 0h-168l234 1096h168zM983 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" /> +<glyph unicode="fl" horiz-adv-x="1165" d="M0 0zM-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87zM868 0h-168l332 1556h168z" /> +<glyph unicode="ffi" horiz-adv-x="1815" d="M545 -492q-71 0 -125 21v141q61 -22 115 -22q68 0 111 57.5t69 181.5l227 1082h-481l-232 -1098q-39 -189 -120 -276t-213 -87q-69 0 -125 21v141q64 -22 112 -22q70 0 114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5 t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11t92.5 -26l-45 -129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 -1098q-43 -195 -123.5 -279t-210.5 -84z M1522 0h-168l233 1096h168zM1634 1376q0 54 32 90.5t83 36.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-38 0 -65 24.5t-27 69.5z" /> +<glyph unicode="ffl" horiz-adv-x="1815" d="M1520 0h-168l331 1556h168zM545 -492q-71 0 -125 21v141q61 -22 115 -22q68 0 111 57.5t69 181.5l227 1082h-481l-232 -1098q-39 -189 -120 -276t-213 -87q-69 0 -125 21v141q64 -22 112 -22q70 0 114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5 t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11t92.5 -26l-45 -129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 -1098 q-43 -195 -123.5 -279t-210.5 -84z" /> +<glyph horiz-adv-x="2048" /> +<glyph horiz-adv-x="2048" /> +<glyph unicode="
" horiz-adv-x="1044" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="	" horiz-adv-x="532" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="!" horiz-adv-x="530" d="M555 1462l-274 -1059h-109q49 307 176 1059h207zM43 78q0 76 39.5 120t107.5 44q45 0 73 -27.5t28 -81.5q0 -68 -39 -115t-105 -47q-49 0 -76.5 28t-27.5 79z" /> +<glyph unicode=""" horiz-adv-x="791" d="M485 1462l-153 -528h-107l72 528h188zM834 1462l-154 -528h-107l72 528h189z" /> +<glyph unicode="#" horiz-adv-x="1323" d="M1036 899l-98 -340h285l-13 -129h-309l-125 -430h-139l129 430h-303l-127 -430h-133l121 430h-261l13 129h284l101 340h-277l13 127h301l123 436h139l-125 -436h305l127 436h133l-125 -436h264l-12 -127h-291zM500 559h303l96 340h-303z" /> +<glyph unicode="$" d="M942 492q0 -162 -112.5 -263t-309.5 -123l-49 -225h-133l49 223q-195 14 -315 72v154q82 -41 175.5 -63.5t166.5 -22.5l98 452q-139 49 -201.5 123.5t-62.5 188.5q0 159 108 255t299 113l39 176h133l-39 -178q159 -12 283 -76l-63 -135q-121 63 -248 72l-94 -440 q149 -55 212.5 -125t63.5 -178zM549 250q107 13 170 75t63 154q0 54 -33 96t-114 74zM627 1235q-108 -11 -167 -69t-59 -156q0 -53 34.5 -97.5t107.5 -70.5z" /> +<glyph unicode="%" horiz-adv-x="1624" d="M1468 1462l-1085 -1462h-152l1086 1462h151zM1284 772q-67 0 -119.5 -64.5t-84 -188.5t-31.5 -240q0 -173 106 -173q65 0 117 65t86.5 198.5t34.5 236.5q0 166 -109 166zM1532 621q0 -107 -31.5 -236t-82 -217.5t-121 -138t-156.5 -49.5q-110 0 -171 74.5t-61 219.5 q0 166 50.5 318.5t136.5 228.5t200 76q116 0 176 -71.5t60 -204.5zM543 1358q-66 0 -119 -63t-85 -187.5t-32 -243.5q0 -172 107 -172q52 0 94 39.5t73.5 114t50.5 175t19 171.5q0 166 -108 166zM791 1206q0 -108 -32 -237.5t-82.5 -217.5t-120.5 -137t-157 -49 q-109 0 -170 75t-61 220q0 166 50.5 318.5t136.5 228.5t200 76q116 0 176 -72t60 -205z" /> +<glyph unicode="&" horiz-adv-x="1372" d="M737 1348q-105 0 -163 -60t-58 -170q0 -120 82 -235q139 71 191 110t83 85t31 104q0 77 -42.5 121.5t-123.5 44.5zM471 119q87 0 168 33t195 124l-306 433q-128 -67 -184 -116t-85.5 -107.5t-29.5 -131.5q0 -106 66.5 -170.5t175.5 -64.5zM66 342q0 148 90 257.5 t303 211.5q-103 165 -103 309q0 164 106 264.5t281 100.5q149 0 236.5 -79t87.5 -212q0 -78 -32.5 -137t-87.5 -108t-127.5 -90t-153.5 -83l278 -389q127 110 199 295h168q-101 -236 -283 -412l203 -270h-201l-117 166q-120 -100 -230 -143t-247 -43q-168 0 -269 96 t-101 266z" /> +<glyph unicode="'" horiz-adv-x="444" d="M485 1462l-153 -528h-107l72 528h188z" /> +<glyph unicode="(" horiz-adv-x="584" d="M82 272q0 339 120 627t384 563h157q-246 -270 -371.5 -570t-125.5 -618q0 -339 114 -598h-131q-147 266 -147 596z" /> +<glyph unicode=")" horiz-adv-x="584" d="M500 864q0 -341 -121.5 -629.5t-382.5 -558.5h-156q496 551 496 1188q0 341 -113 598h131q146 -269 146 -598z" /> +<glyph unicode="*" horiz-adv-x="1130" d="M854 1528l-123 -383l422 18l-8 -157l-393 47l180 -383l-166 -52l-113 406l-258 -344l-116 121l309 284l-373 109l55 154l371 -185l41 400z" /> +<glyph unicode="+" d="M516 651h-389v142h389v391h141v-391h390v-142h-390v-387h-141v387z" /> +<glyph unicode="," horiz-adv-x="492" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187z" /> +<glyph unicode="-" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" /> +<glyph unicode="." horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" /> +<glyph unicode="/" horiz-adv-x="717" d="M893 1462l-813 -1462h-174l813 1462h174z" /> +<glyph unicode="0" d="M1092 1014q0 -295 -78.5 -539t-214 -369.5t-314.5 -125.5q-176 0 -270 127.5t-94 369.5q0 270 82 514.5t216.5 369t307.5 124.5q365 0 365 -471zM717 1341q-113 0 -209 -115.5t-155.5 -323t-59.5 -423.5q0 -172 50 -264t161 -92q115 0 209 114t150.5 328t56.5 453 q0 323 -203 323z" /> +<glyph unicode="1" d="M588 0h-172l196 913q59 261 88 359q-50 -53 -139 -111l-178 -110l-80 127l449 284h149z" /> +<glyph unicode="2" d="M911 0h-899l31 147l465 420q102 93 176.5 163.5t123 133t72 124t23.5 136.5q0 99 -60 157t-163 58q-77 0 -150.5 -28.5t-162.5 -96.5l-82 115q191 154 413 154q176 0 278.5 -88.5t102.5 -243.5q0 -111 -39.5 -204t-131 -197t-294.5 -281l-352 -307v-8h678z" /> +<glyph unicode="3" d="M1073 1159q0 -156 -101 -264.5t-280 -140.5v-9q124 -23 195 -106.5t71 -208.5q0 -133 -62 -234.5t-181 -158.5t-283 -57q-210 0 -385 79v164q94 -49 199 -75.5t190 -26.5q162 0 252 79.5t90 217.5q0 131 -79 198.5t-220 67.5h-131l31 143h139q165 0 274 87t109 227 q0 92 -58 146t-157 54q-80 0 -157 -27t-175 -93l-80 118q195 144 424 144q179 0 277 -87t98 -237z" /> +<glyph unicode="4" d="M1067 334h-233l-72 -334h-164l74 334h-656l29 158l834 978h196l-207 -983h232zM705 487q46 220 78 373t116 445h-8q-17 -29 -66.5 -96.5t-72.5 -96.5l-533 -625h486z" /> +<glyph unicode="5" d="M598 893q182 0 289.5 -104.5t107.5 -282.5q0 -161 -73 -283t-204 -182.5t-308 -60.5q-193 0 -330 79v164q164 -102 334 -102q191 0 298 96t107 268q0 126 -73.5 199.5t-204.5 73.5q-48 0 -97 -6.5t-139 -30.5l-74 57l197 684h668l-33 -153h-522l-127 -439q87 23 184 23z " /> +<glyph unicode="6" d="M133 424q0 209 60.5 415t163.5 351.5t246 219t327 73.5q111 0 184 -23l-35 -145q-68 22 -170 22q-212 0 -356.5 -149t-212.5 -443h8q59 79 146.5 126t193.5 47q154 0 244 -98.5t90 -270.5q0 -161 -66.5 -294.5t-180.5 -204t-261 -70.5q-182 0 -281.5 115t-99.5 329z M532 121q94 0 167.5 54t114 149t40.5 208q0 248 -221 248q-66 0 -128 -28.5t-110 -76t-72 -104.5t-24 -155q0 -137 60.5 -216t172.5 -79z" /> +<glyph unicode="7" d="M174 0l768 1313h-719l31 149h891l-27 -139l-764 -1323h-180z" /> +<glyph unicode="8" d="M741 1485q174 0 271.5 -86.5t97.5 -235.5q0 -129 -78 -225t-266 -176q127 -78 180 -165t53 -202q0 -122 -60 -217.5t-172.5 -146.5t-264.5 -51q-190 0 -298 98.5t-108 267.5q0 148 95 256t296 184q-95 69 -135.5 144.5t-40.5 171.5q0 111 54.5 198.5t153.5 136t222 48.5z M608 700q-185 -60 -261.5 -143.5t-76.5 -202.5q0 -107 69 -170t181 -63q139 0 222 74t83 196q0 99 -52 174t-165 135zM729 1341q-114 0 -182 -65.5t-68 -175.5q0 -82 39 -144t127 -116q161 60 228 131.5t67 173.5q0 90 -57.5 143t-153.5 53z" /> +<glyph unicode="9" d="M1067 1034q0 -194 -56 -406.5t-147.5 -360t-221.5 -217.5t-302 -70q-136 0 -242 34v158q134 -47 246 -47q202 0 327 141t189 441h-10q-51 -75 -132.5 -118.5t-180.5 -43.5q-169 0 -261 98.5t-92 288.5q0 153 64.5 280.5t180 199t259.5 71.5q180 0 279.5 -114.5 t99.5 -334.5zM682 1341q-150 0 -241 -113t-91 -290q0 -124 54.5 -190t162.5 -66q76 0 140 28.5t108.5 81.5t65 114t20.5 151q0 131 -59 207.5t-160 76.5z" /> +<glyph unicode=":" horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" /> +<glyph unicode=";" horiz-adv-x="518" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" /> +<glyph unicode="<" d="M1040 242l-919 422v98l919 479v-149l-747 -371l747 -328v-151z" /> +<glyph unicode="=" d="M127 858v139h920v-139h-920zM127 444v142h920v-142h-920z" /> +<glyph unicode=">" d="M121 393l745 328l-745 371v149l919 -479v-98l-919 -422v151z" /> +<glyph unicode="?" horiz-adv-x="874" d="M260 403q22 130 72.5 213.5t165.5 174.5q128 100 168 144t63 94t23 112q0 93 -51.5 143.5t-147.5 50.5q-81 0 -155 -25.5t-140 -56.5l-61 129q92 51 192 76t182 25q167 0 259 -84t92 -238q0 -123 -65.5 -226.5t-225.5 -223.5q-125 -91 -169 -147.5t-67 -160.5h-135z M158 74q0 77 40 122.5t111 45.5q44 0 70.5 -26t26.5 -79q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26t-27 77z" /> +<glyph unicode="@" horiz-adv-x="1735" d="M1679 852q0 -179 -55 -324t-155 -227t-222 -82q-197 0 -213 184h-8q-111 -184 -291 -184q-115 0 -180.5 75.5t-65.5 209.5q0 157 68 284t188.5 199t260.5 72q65 0 127.5 -12t150.5 -48q-64 -242 -98 -368t-31 -172q0 -117 102 -117q78 0 141.5 67t100.5 183.5t37 243.5 q0 239 -128 367t-370 128q-228 0 -406.5 -107t-277 -295.5t-98.5 -416.5q0 -270 143.5 -418.5t409.5 -148.5q197 0 420 86v-127q-219 -90 -443 -90q-314 0 -494.5 184.5t-180.5 505.5q0 261 126.5 485.5t343.5 347.5t486 123q191 0 329 -75.5t210.5 -213.5t72.5 -319z M985 938q-94 0 -174 -55t-126 -153t-46 -212q0 -93 33 -134.5t98 -41.5q187 0 272 315l70 258q-63 23 -127 23z" /> +<glyph unicode="A" horiz-adv-x="1137" d="M813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394z" /> +<glyph unicode="B" horiz-adv-x="1225" d="M770 1462q432 0 432 -336q0 -141 -87 -238t-245 -126v-10q115 -32 176.5 -110.5t61.5 -188.5q0 -212 -152 -332.5t-407 -120.5h-463l309 1462h375zM434 836h248q156 0 249 73t93 199q0 104 -66.5 155.5t-209.5 51.5h-211zM287 145h266q181 0 278 80.5t97 227.5 q0 116 -74.5 177.5t-214.5 61.5h-236z" /> +<glyph unicode="C" horiz-adv-x="1198" d="M942 1331q-174 0 -311.5 -97t-218 -284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 -164 -45t-188 -14q-242 0 -380 149.5t-138 407.5q0 261 105.5 485.5t283.5 342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69z" /> +<glyph unicode="D" horiz-adv-x="1364" d="M1300 877q0 -261 -105 -461t-300 -308t-457 -108h-352l309 1462h342q276 0 419.5 -149.5t143.5 -435.5zM449 147q202 0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178l-250 -1168h162z" /> +<glyph unicode="E" horiz-adv-x="1047" d="M821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565z" /> +<glyph unicode="F" horiz-adv-x="967" d="M258 0h-172l309 1462h735l-30 -153h-568l-110 -533h528l-32 -153h-529z" /> +<glyph unicode="G" horiz-adv-x="1386" d="M821 766h459l-154 -711q-216 -75 -419 -75q-264 0 -410.5 144.5t-146.5 403.5q0 269 101.5 489.5t281.5 343t399 122.5q117 0 219.5 -20t206.5 -64l-66 -152q-77 34 -165.5 59t-194.5 25q-169 0 -307.5 -101.5t-215.5 -283.5t-77 -407q0 -190 102.5 -299t286.5 -109 q154 0 260 39l96 444h-289z" /> +<glyph unicode="H" horiz-adv-x="1389" d="M1085 0h-167l143 688h-660l-145 -688h-170l309 1462h170l-131 -622h660l133 622h168z" /> +<glyph unicode="I" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168z" /> +<glyph unicode="J" horiz-adv-x="547" d="M-166 -385q-105 0 -153 25l6 147q69 -20 145 -20q100 0 165.5 62.5t90.5 182.5l307 1450h170l-309 -1468q-79 -379 -422 -379z" /> +<glyph unicode="K" horiz-adv-x="1141" d="M1034 0h-186q-72 181 -146.5 359.5t-146.5 361.5l-174 -131l-125 -590h-170l309 1462h170l-151 -710l700 710h209l-639 -637z" /> +<glyph unicode="L" horiz-adv-x="971" d="M86 0l309 1462h170l-276 -1308h565l-33 -154h-735z" /> +<glyph unicode="M" horiz-adv-x="1714" d="M676 0l-166 1296h-8q-7 -72 -28.5 -197.5t-37.5 -199.5l-190 -899h-162l309 1462h244l149 -1204h9l659 1204h266l-303 -1462h-174q126 590 193 905.5t94 392.5h-6l-717 -1298h-131z" /> +<glyph unicode="N" horiz-adv-x="1438" d="M1139 0h-181l-460 1223h-6q-32 -221 -74 -418l-172 -805h-162l309 1462h180l459 -1220h6q30 224 72 405l174 815h164z" /> +<glyph unicode="O" horiz-adv-x="1475" d="M1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403 q0 199 -94 310.5t-261 111.5z" /> +<glyph unicode="P" horiz-adv-x="1159" d="M1159 1085q0 -248 -164 -379t-481 -131h-135l-123 -575h-170l309 1462h330q214 0 324 -94.5t110 -282.5zM410 721h133q216 0 328 91t112 267q0 125 -69.5 180.5t-213.5 55.5h-163z" /> +<glyph unicode="Q" horiz-adv-x="1475" d="M874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q158 0 279 100t187.5 280.5t66.5 399.5q0 199 -94 310.5t-261 111.5zM725 -18l-17 -2h-16q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424 q0 -333 -139 -576t-375 -321l274 -358h-219z" /> +<glyph unicode="R" horiz-adv-x="1165" d="M385 608l-129 -608h-170l309 1462h320q446 0 446 -366q0 -348 -368 -449l239 -647h-186l-209 608h-252zM532 1313q-102 -494 -116 -559h168q193 0 297 85t104 244q0 121 -67.5 175.5t-219.5 54.5h-166z" /> +<glyph unicode="S" horiz-adv-x="1028" d="M913 424q0 -211 -140.5 -327.5t-395.5 -116.5q-106 0 -186.5 14.5t-151.5 48.5v170q162 -84 340 -84q162 0 257 75.5t95 207.5q0 78 -52.5 137.5t-195.5 140.5q-151 85 -209.5 170t-58.5 201q0 187 132 304.5t347 117.5q99 0 184.5 -19t180.5 -65l-66 -150 q-66 38 -148 60t-151 22q-134 0 -215.5 -69.5t-81.5 -188.5q0 -54 17 -92.5t54 -72.5t142 -95q147 -88 198.5 -138t78 -110.5t26.5 -140.5z" /> +<glyph unicode="T" horiz-adv-x="1020" d="M487 0h-172l277 1311h-406l33 151h985l-30 -151h-408z" /> +<glyph unicode="U" horiz-adv-x="1384" d="M1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170z" /> +<glyph unicode="V" horiz-adv-x="1122" d="M479 197q61 144 162 338l479 927h191l-781 -1462h-180l-162 1462h170l97 -930q20 -196 20 -335h4z" /> +<glyph unicode="W" horiz-adv-x="1745" d="M1257 0h-170l-49 965q-8 136 -8 282h-6q-25 -72 -61 -154.5t-504 -1092.5h-174l-62 1462h170l31 -901l2 -88q0 -98 -10 -258h6q89 243 156 383l405 864h178l43 -860q9 -153 9 -304l-1 -83h9q75 224 131 354l387 893h182z" /> +<glyph unicode="X" horiz-adv-x="1063" d="M956 0h-180l-213 641l-481 -641h-186l596 776l-263 686h172l203 -563l443 563h186l-555 -694z" /> +<glyph unicode="Y" horiz-adv-x="1030" d="M537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170z" /> +<glyph unicode="Z" horiz-adv-x="1087" d="M885 0h-901l28 137l924 1170h-655l32 155h858l-26 -139l-924 -1169h697z" /> +<glyph unicode="[" horiz-adv-x="586" d="M371 -324h-387l381 1786h387l-31 -141h-227l-318 -1503h227z" /> +<glyph unicode="\" horiz-adv-x="717" d="M375 1462l217 -1462h-154l-217 1462h154z" /> +<glyph unicode="]" horiz-adv-x="586" d="M-119 -182h225l320 1503h-227l30 141h389l-380 -1786h-388z" /> +<glyph unicode="^" horiz-adv-x="1059" d="M53 553l598 920h109l266 -920h-145l-201 747l-467 -747h-160z" /> +<glyph unicode="_" horiz-adv-x="807" d="M623 -324h-811l30 140h811z" /> +<glyph unicode="`" horiz-adv-x="1135" d="M903 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="a" horiz-adv-x="1157" d="M639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233t-51 -310 q0 -114 47 -170.5t132 -56.5z" /> +<glyph unicode="b" horiz-adv-x="1182" d="M545 -20q-97 0 -170.5 51t-110.5 139h-10l-70 -170h-125l330 1556h168q-51 -242 -78.5 -370.5t-75.5 -300.5h9q93 118 183.5 173.5t186.5 55.5q141 0 220 -99t79 -272q0 -209 -68.5 -386.5t-191 -277t-276.5 -99.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295 q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" /> +<glyph unicode="c" horiz-adv-x="922" d="M506 -20q-194 0 -301 107t-107 302q0 200 74 369t204.5 263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 -63z" /> +<glyph unicode="d" horiz-adv-x="1182" d="M639 1114q194 0 281 -190h10q17 155 45 274l78 358h166l-330 -1556h-139l22 209h-8q-101 -125 -189 -177t-182 -52q-139 0 -217 98t-78 272q0 214 72 392t194.5 275t274.5 97zM449 119q94 0 194 93.5t158.5 239t58.5 296.5q0 111 -54 169t-157 58q-101 0 -187.5 -82.5 t-139 -232t-52.5 -314.5q0 -227 179 -227z" /> +<glyph unicode="e" horiz-adv-x="1010" d="M492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35z" /> +<glyph unicode="f" horiz-adv-x="641" d="M-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87z" /> +<glyph unicode="g" horiz-adv-x="1026" d="M1100 1096l-25 -107l-211 -24q41 -62 41 -158q0 -191 -116.5 -304.5t-311.5 -113.5q-55 0 -84 8q-139 -53 -139 -131q0 -41 33 -54.5t96 -21.5l117 -14q181 -22 262.5 -88t81.5 -194q0 -184 -146 -285t-411 -101q-194 0 -304 73.5t-110 207.5q0 105 72 182t233 131 q-78 41 -78 121q0 69 51 118.5t142 92.5q-63 32 -103 94.5t-40 145.5q0 194 119.5 318t305.5 124q78 0 154 -20h371zM35 -195q0 -77 65 -122t193 -45q182 0 284.5 63.5t102.5 179.5q0 62 -54 98t-184 50l-159 16q-120 -25 -184 -88t-64 -152zM313 680q0 -85 45 -129.5 t125 -44.5q79 0 138 42t90.5 115.5t31.5 159.5q0 82 -44 125t-126 43q-78 0 -136.5 -40.5t-91 -113t-32.5 -157.5z" /> +<glyph unicode="h" horiz-adv-x="1182" d="M729 0l148 692q18 94 18 135q0 148 -147 148q-89 0 -173.5 -59t-149 -171.5t-97.5 -271.5l-101 -473h-168l330 1556h168q-18 -82 -34.5 -159t-34 -156.5t-38 -166.5t-47.5 -189h11q94 123 185.5 176t191.5 53q131 0 202.5 -72t71.5 -204q0 -62 -23 -166 q-39 -193 -145 -672h-168z" /> +<glyph unicode="i" horiz-adv-x="520" d="M227 0h-168l234 1096h168zM340 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" /> +<glyph unicode="j" horiz-adv-x="520" d="M-135 -492q-69 0 -123 21v141q61 -22 119 -22q125 0 168 205l264 1243h166l-266 -1258q-36 -171 -114.5 -250.5t-213.5 -79.5zM340 1376q0 56 32 91.5t83 35.5q86 0 86 -90q0 -55 -33.5 -93t-77.5 -38q-38 0 -64 24.5t-26 69.5z" /> +<glyph unicode="k" horiz-adv-x="999" d="M330 559l526 537h201l-469 -467l295 -629h-187l-235 524l-152 -123l-82 -401h-170l330 1556h170l-129 -602t-102 -395h4z" /> +<glyph unicode="l" horiz-adv-x="520" d="M225 0h-168l332 1556h168z" /> +<glyph unicode="m" horiz-adv-x="1786" d="M696 0l148 692q18 94 18 135q0 70 -31 109t-106 39q-84 0 -163.5 -60t-140 -171.5t-93.5 -268.5l-101 -475h-168l234 1096h139l-22 -203h10q87 119 173.5 171t178.5 52q113 0 174 -65t72 -181h8q86 125 183 185.5t196 60.5q127 0 196.5 -68t69.5 -198q0 -68 -22 -178 l-144 -672h-170l148 692q20 104 20 146q0 62 -34.5 99.5t-108.5 37.5q-81 0 -160 -58t-138.5 -164.5t-90.5 -252.5l-107 -500h-168z" /> +<glyph unicode="n" horiz-adv-x="1182" d="M729 0l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 -171t-97.5 -269l-101 -475h-168l234 1096h139l-22 -203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 -672h-170z" /> +<glyph unicode="o" horiz-adv-x="1149" d="M643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5z" /> +<glyph unicode="p" horiz-adv-x="1182" d="M545 -20q-97 0 -170 50t-113 140h-10l-4 -38q-3 -25 -10.5 -70t-114.5 -554h-166l336 1588h139l-26 -209h8q179 227 372 227q137 0 216 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 -98.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295q0 -110 55.5 -168.5 t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" /> +<glyph unicode="q" horiz-adv-x="1182" d="M641 1116q94 0 165.5 -50.5t108.5 -141.5h13l67 172h125l-336 -1588h-166l101 480q9 45 57 221h-8q-95 -121 -185 -175t-186 -54q-140 0 -219.5 97.5t-79.5 272.5q0 212 72.5 392t196 277t274.5 97zM449 119q92 0 190 92t158.5 237t60.5 300q0 105 -54.5 166t-152.5 61 q-101 0 -189 -84.5t-140 -233t-52 -311.5q0 -227 179 -227z" /> +<glyph unicode="r" horiz-adv-x="811" d="M752 1116q69 0 120 -14l-36 -150q-53 13 -105 13q-91 0 -170.5 -60t-139 -166.5t-87.5 -236.5l-107 -502h-168l234 1096h139l-22 -203h10q72 95 119 136.5t98.5 64t114.5 22.5z" /> +<glyph unicode="s" horiz-adv-x="877" d="M735 311q0 -156 -110.5 -243.5t-311.5 -87.5q-169 0 -305 69v158q70 -42 151 -65t150 -23q126 0 190 50t64 128q0 57 -35 96t-151 107q-130 73 -184 143t-54 166q0 138 101 222.5t266 84.5q171 0 330 -74l-54 -137l-56 25q-101 43 -220 43q-93 0 -146 -43.5t-53 -112.5 q0 -56 35.5 -96t146.5 -103q107 -60 153.5 -103t69.5 -92.5t23 -111.5z" /> +<glyph unicode="t" horiz-adv-x="664" d="M395 117q55 0 144 26v-129q-34 -14 -84 -24t-80 -10q-125 0 -191.5 59.5t-66.5 177.5q0 66 18 150l127 602h-172l14 73l185 78l125 228h98l-55 -252h274l-26 -127h-273l-129 -604q-18 -87 -18 -132q0 -56 29 -86t81 -30z" /> +<glyph unicode="u" horiz-adv-x="1182" d="M451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170z" /> +<glyph unicode="v" horiz-adv-x="946" d="M223 0l-125 1096h168l64 -613q24 -258 24 -362h6q127 275 179 371l325 604h178l-591 -1096h-228z" /> +<glyph unicode="w" horiz-adv-x="1468" d="M831 0l-32 602q-4 94 -4 172v156h-9l-50 -118l-83 -189l-291 -623h-202l-43 1096h164l18 -594v-88q0 -147 -8 -269h6q47 124 137 322l295 629h182l37 -594q6 -168 6 -262v-53l-2 -42h6q28 86 83 218.5t323 732.5h178l-506 -1096h-205z" /> +<glyph unicode="x" horiz-adv-x="979" d="M467 434l-346 -434h-195l475 565l-239 531h170l174 -412l330 412h194l-455 -539l252 -557h-168z" /> +<glyph unicode="y" horiz-adv-x="946" d="M98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136z" /> +<glyph unicode="z" horiz-adv-x="909" d="M690 0h-719l23 117l694 854h-479l27 125h657l-29 -140l-680 -831h531z" /> +<glyph unicode="{" horiz-adv-x="715" d="M442 -324q-141 0 -216.5 52.5t-75.5 171.5q0 52 20 141q33 146 51.5 227.5t14.5 102.5q0 143 -209 143l32 143q118 0 189.5 43.5t93.5 147.5l68 326q34 160 117.5 224t254.5 64h33l-31 -141q-105 0 -151 -36.5t-66 -123.5l-71 -321q-28 -123 -91 -184t-167 -78v-5 q151 -41 151 -213q0 -59 -18 -131l-47 -211q-15 -58 -15 -98q0 -53 36.5 -77.5t119.5 -24.5v-142h-23z" /> +<glyph unicode="|" d="M541 1556h139v-2052h-139v2052z" /> +<glyph unicode="}" horiz-adv-x="715" d="M285 1462q144 0 220.5 -52.5t76.5 -170.5q0 -48 -21 -141l-49 -219q-16 -68 -16 -111q0 -143 209 -143l-33 -144q-119 0 -190 -43t-93 -147l-67 -326q-36 -164 -119 -226.5t-264 -62.5h-13v142q115 0 167 36t71 123l72 322q25 117 88 179.5t170 80.5v6q-150 42 -150 211 q0 59 18 131l50 213q14 65 14 99q0 53 -40.5 77.5t-139.5 24.5l28 141h11z" /> +<glyph unicode="~" d="M348 713q-54 0 -118.5 -34.5t-114.5 -86.5v151q98 109 243 109q69 0 127 -14.5t144 -51.5q64 -27 112.5 -41t98.5 -14q55 0 119.5 33t115.5 88v-150q-100 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12z" /> +<glyph unicode="¡" horiz-adv-x="530" d="M260 684h109l-176 -1057h-207zM250 950q0 76 40.5 122t110.5 46q44 0 70.5 -26t26.5 -80q0 -71 -40.5 -117.5t-105.5 -46.5q-48 0 -75 25.5t-27 76.5z" /> +<glyph unicode="¢" d="M582 -20h-125l43 215q-132 34 -203.5 137.5t-71.5 257.5q0 185 63.5 344t178.5 258.5t260 120.5l35 170h123l-37 -168q119 -9 217 -49l-47 -142q-109 52 -219 52q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -125 66 -198t184 -73q72 0 136 20t126 48v-143 q-123 -62 -286 -66z" /> +<glyph unicode="£" d="M842 1481q184 0 336 -86l-66 -133q-146 79 -278 79q-213 0 -263 -237l-69 -326h370l-26 -127h-371l-47 -219q-22 -98 -66 -166.5t-124 -111.5h725l-33 -154h-953l27 141q205 46 258 289l47 221h-200l26 127h201l76 350q75 353 430 353z" /> +<glyph unicode="¤" d="M229 723q0 117 68 215l-129 129l92 92l127 -129q103 70 217 70t215 -70l129 129l92 -90l-129 -129q70 -104 70 -217q0 -119 -70 -217l127 -127l-90 -90l-129 127q-98 -68 -215 -68q-119 0 -217 70l-127 -127l-90 90l127 127q-68 96 -68 215zM358 723q0 -103 71.5 -174.5 t174.5 -71.5q104 0 177 71.5t73 174.5q0 104 -73 177t-177 73q-102 0 -174 -72.5t-72 -177.5z" /> +<glyph unicode="¥" d="M582 715l491 747h187l-533 -770h231l-28 -133h-297l-33 -160h297l-29 -133h-295l-57 -266h-154l56 266h-291l29 133h290l33 160h-291l29 133h225l-202 770h163z" /> +<glyph unicode="¦" d="M541 1556h139v-776h-139v776zM541 281h139v-777h-139v777z" /> +<glyph unicode="§" horiz-adv-x="995" d="M174 770q0 201 238 307q-119 70 -119 203q0 127 103.5 206t279.5 79q189 0 321 -68l-53 -123q-148 60 -266 60q-102 0 -162.5 -40.5t-60.5 -109.5q0 -49 38 -83.5t162 -90.5q100 -44 149 -83.5t75 -89.5t26 -114q0 -97 -61 -180t-172 -139q114 -71 114 -189 q0 -152 -114 -237.5t-318 -85.5q-176 0 -295 61v148q56 -34 136.5 -56t156.5 -22q133 0 204 44.5t71 129.5q0 48 -50.5 89t-152.5 87q-138 61 -194 130.5t-56 166.5zM514 1010q-82 -26 -135 -87.5t-53 -131.5t50.5 -117t198.5 -111q80 44 127.5 107t47.5 131 q0 60 -49.5 105.5t-186.5 103.5z" /> +<glyph unicode="¨" horiz-adv-x="1135" d="M457 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="©" horiz-adv-x="1704" d="M928 1059q-125 0 -191.5 -87t-66.5 -241q0 -169 65 -249.5t193 -80.5q82 0 211 43v-122q-66 -28 -113 -38t-104 -10q-192 0 -297 119.5t-105 339.5q0 208 110 330.5t300 122.5q130 0 248 -60l-60 -120q-106 53 -190 53zM139 731q0 200 100 375t275 276t377 101 q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5 q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5z" /> +<glyph unicode="ª" horiz-adv-x="686" d="M498 1479q114 0 153 -103h6l37 90h86l-139 -665h-92l14 117h-4q-40 -56 -90 -93t-123 -37q-77 0 -126.5 60t-49.5 166q0 127 41.5 234.5t116.5 169t170 61.5zM381 891q61 0 112.5 49t86 137.5t34.5 167.5q0 62 -28.5 96.5t-85.5 34.5q-92 0 -154.5 -103t-62.5 -243 q0 -139 98 -139z" /> +<glyph unicode="«" horiz-adv-x="958" d="M88 584l391 374l78 -81l-297 -328l172 -387l-113 -49l-231 442v29zM483 541l367 405l86 -69l-283 -365l158 -350l-113 -49l-215 397v31z" /> +<glyph unicode="¬" d="M1047 793v-529h-140v387h-780v142h920z" /> +<glyph unicode="­" horiz-adv-x="639" d="M55 469zM55 469l35 158h479l-34 -158h-480z" /> +<glyph unicode="®" horiz-adv-x="1704" d="M139 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5 q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM1194 915q0 -78 -47.5 -141t-132.5 -98l227 -385h-149l-207 352h-113v-352h-127v880h229q163 0 241.5 -63t78.5 -193zM772 762h92q195 0 195 149q0 76 -47.5 107t-149.5 31h-90v-287z " /> +<glyph unicode="¯" horiz-adv-x="782" d="M1012 1556h-785l33 132h787z" /> +<glyph unicode="°" horiz-adv-x="877" d="M215 1171q0 128 90.5 220t220.5 92q83 0 155.5 -41.5t114.5 -114t42 -156.5q0 -128 -90.5 -218.5t-221.5 -90.5t-221 90.5t-90 218.5zM328 1171q0 -80 58 -138t140 -58q83 0 140 58.5t57 137.5q0 82 -57.5 140.5t-139.5 58.5q-80 0 -139 -58.5t-59 -140.5z" /> +<glyph unicode="±" d="M516 643h-389v141h389v392h141v-392h390v-141h-390v-387h-141v387zM127 0v141h920v-141h-920z" /> +<glyph unicode="²" horiz-adv-x="717" d="M657 586h-561l23 106l264 228q115 100 158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90q125 101 274 101q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395z" /> +<glyph unicode="³" horiz-adv-x="717" d="M549 1036q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5q-125 0 -233 56v127q125 -72 239 -72q205 0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151 q0 -180 -207 -234v-4z" /> +<glyph unicode="´" horiz-adv-x="1135" d="M532 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="µ" horiz-adv-x="1194" d="M295 266q0 -147 147 -147q89 0 172 59t148.5 171t99.5 269l105 478h163l-233 -1096h-139l24 205h-12q-93 -121 -183 -173t-188 -52q-112 0 -163 96h-9q-11 -78 -22.5 -148t-83.5 -420h-164l336 1588h168l-148 -695q-18 -92 -18 -135z" /> +<glyph unicode="¶" horiz-adv-x="1341" d="M1206 -260h-114v1661h-213v-1661h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h557v-1816z" /> +<glyph unicode="·" horiz-adv-x="518" d="M170 587zM170 690q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" /> +<glyph unicode="¸" horiz-adv-x="420" d="M211 -276q0 -98 -81 -157t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" /> +<glyph unicode="¹" horiz-adv-x="717" d="M537 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90z" /> +<glyph unicode="º" horiz-adv-x="688" d="M745 1219q0 -191 -88.5 -311t-240.5 -120q-113 0 -180.5 71t-67.5 196q0 117 42 215.5t117.5 153.5t174.5 55q117 0 180 -67t63 -193zM500 1376q-102 0 -160.5 -87.5t-58.5 -229.5q0 -85 38 -127.5t107 -42.5q94 0 152.5 88.5t58.5 232.5q0 166 -137 166z" /> +<glyph unicode="»" horiz-adv-x="958" d="M872 485l-393 -370l-78 82l297 323l-172 391l113 50l233 -447v-29zM477 528l-368 -401l-86 70l282 360l-158 354l113 50l217 -402v-31z" /> +<glyph unicode="¼" horiz-adv-x="1518" d="M123 0zM1362 1462l-1086 -1462h-153l1085 1462h154zM483 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90zM1327 203h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM1095 320q69 322 90 395 q-20 -36 -110 -149l-205 -246h225z" /> +<glyph unicode="½" horiz-adv-x="1518" d="M66 0zM427 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90zM1305 1462l-1086 -1462h-153l1085 1462h154zM1343 1h-561l23 106l264 228q115 100 158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90 q125 101 274 101q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395z" /> +<glyph unicode="¾" horiz-adv-x="1565" d="M87 0zM517 1036q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5q-125 0 -233 56v127q125 -72 239 -72q205 0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151 q0 -180 -207 -234v-4zM1512 1462l-1086 -1462h-153l1085 1462h154zM1477 203h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM1245 320q69 322 90 395q-20 -36 -110 -149l-205 -246h225z" /> +<glyph unicode="¿" horiz-adv-x="874" d="M657 680q-22 -130 -72 -212t-165 -175l-95 -75q-159 -127 -159 -275q0 -93 51.5 -144t147.5 -51q80 0 154 25.5t140 56.5l62 -129q-90 -48 -189 -74t-186 -26q-168 0 -259 83.5t-91 237.5q0 124 66 228t225 223q132 98 172.5 152.5t62.5 154.5h135zM760 1010 q0 -77 -40.5 -122.5t-111.5 -45.5q-43 0 -69.5 26t-26.5 78q0 71 40 118.5t107 47.5q47 0 74 -25.5t27 -76.5z" /> +<glyph unicode="À" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM863 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="Á" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM679 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="Â" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM1080 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27 z" /> +<glyph unicode="Ã" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM934 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18 t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" /> +<glyph unicode="Ä" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5 t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="Å" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM991 1585q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM887 1583 q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" /> +<glyph unicode="Æ" horiz-adv-x="1673" d="M1448 0h-737l98 465h-438l-293 -465h-197l938 1462h938l-33 -153h-565l-100 -469h528l-28 -150h-529l-115 -538h566zM840 621l147 688h-84l-434 -688h371z" /> +<glyph unicode="Ç" horiz-adv-x="1198" d="M150 0zM942 1331q-174 0 -311.5 -97t-218 -284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 -164 -45t-188 -14q-242 0 -380 149.5t-138 407.5q0 261 105.5 485.5t283.5 342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69zM758 -276 q0 -98 -81 -157t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" /> +<glyph unicode="È" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM898 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="É" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM657 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="Ê" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM1084 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="Ë" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="Ì" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM593 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="Í" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM412 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="Î" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM808 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="Ï" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM265 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM629 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="Ð" horiz-adv-x="1364" d="M1300 877q0 -261 -105 -461t-300 -308t-457 -108h-352l135 649h-149l32 150h150l141 663h342q276 0 419.5 -149.5t143.5 -435.5zM449 147q202 0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178l-111 -516h330l-33 -150h-330l-106 -502h162z" /> +<glyph unicode="Ñ" horiz-adv-x="1438" d="M84 0zM1139 0h-181l-460 1223h-6q-32 -221 -74 -418l-172 -805h-162l309 1462h180l459 -1220h6q30 224 72 405l174 815h164zM1102 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5 t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" /> +<glyph unicode="Ò" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1007 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="Ó" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM821 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="Ô" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1227 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="Õ" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1067 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" /> +<glyph unicode="Ö" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM664 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1028 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="×" d="M487 723l-319 321l98 99l320 -320l323 320l99 -96l-324 -324l322 -322l-97 -96l-323 320l-320 -318l-96 96z" /> +<glyph unicode="Ø" horiz-adv-x="1475" d="M1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-200 0 -332 96l-129 -160l-112 92l137 170q-106 136 -106 371q0 264 96 482t263.5 336t377.5 118q99 0 178.5 -27t151.5 -84l131 166l114 -92l-149 -184q48 -62 73 -156t25 -201zM874 1333q-157 0 -281 -101 t-192.5 -281t-68.5 -398q0 -135 41 -227l737 919q-90 88 -236 88zM1229 911q0 118 -33 205l-733 -911q91 -74 233 -74q152 0 272.5 97.5t190.5 279.5t70 403z" /> +<glyph unicode="Ù" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM991 1579h-104q-61 61 -128.5 154 t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="Ú" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM823 1606q56 60 125.5 151.5t106.5 149.5 h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="Û" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM1217 1579h-103q-57 48 -161 189 q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="Ü" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM643 1716q0 46 28 79.5t74 33.5 q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1007 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="Ý" horiz-adv-x="1030" d="M188 0zM537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170zM616 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="Þ" horiz-adv-x="1159" d="M1106 829q0 -248 -164 -379t-483 -131h-133l-70 -319h-170l309 1462h170l-53 -256h160q213 0 323.5 -95t110.5 -282zM354 465h135q215 0 328 91t113 267q0 126 -70 181t-215 55h-166z" /> +<glyph unicode="ß" horiz-adv-x="1182" d="M-133 -492q-69 0 -123 21v143q61 -22 111 -22q65 0 107 47.5t65 157.5l280 1314q43 200 156 299t307 99q162 0 252 -71t90 -196q0 -57 -21 -106.5t-61.5 -95t-178.5 -150.5q-110 -83 -110 -151q0 -56 95 -122q47 -34 101 -87.5t79.5 -110t25.5 -123.5 q0 -175 -108.5 -274.5t-292.5 -99.5q-175 0 -268 71v160q51 -41 118.5 -66.5t129.5 -25.5q113 0 181 58t68 159q0 40 -10.5 71t-33.5 59t-89 83q-88 69 -122.5 124t-34.5 115q0 53 18.5 96t49.5 78.5t124 104.5q80 56 111 87.5t48 65t17 70.5q0 64 -52.5 100.5t-141.5 36.5 q-119 0 -186 -62.5t-95 -190.5l-274 -1303q-40 -189 -121 -276t-211 -87z" /> +<glyph unicode="à" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM824 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="á" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM600 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="â" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM1005 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="ã" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM856 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" /> +<glyph unicode="ä" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM454 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM818 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="å" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM951 1456q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM847 1454q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" /> +<glyph unicode="æ" horiz-adv-x="1669" d="M1165 -20q-108 0 -189.5 39.5t-121.5 119.5l-31 -139h-114l26 209h-8q-109 -132 -191.5 -180.5t-177.5 -48.5q-122 0 -191 99t-69 269q0 206 70.5 385t191.5 281t263 102q82 0 145 -48.5t102 -143.5h11l67 172h109l-31 -146q123 166 332 166q119 0 192.5 -68t73.5 -184 q0 -182 -166.5 -283.5t-472.5 -101.5h-39l-4 -80q0 -131 62.5 -204.5t193.5 -73.5q55 0 116.5 16.5t178.5 67.5v-150q-164 -75 -328 -75zM412 119q95 0 188.5 91.5t153 240.5t59.5 299q0 103 -45.5 164t-122.5 61q-99 0 -187 -86.5t-138 -231.5t-50 -309q0 -114 37 -171.5 t105 -57.5zM1325 973q-117 0 -211 -94.5t-141 -260.5h14q226 0 348.5 58.5t122.5 169.5q0 61 -35 94t-98 33z" /> +<glyph unicode="ç" horiz-adv-x="922" d="M98 0zM506 -20q-194 0 -301 107t-107 302q0 200 74 369t204.5 263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 -63zM592 -276q0 -98 -81 -157 t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" /> +<glyph unicode="è" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM777 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="é" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM585 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="ê" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM966 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="ë" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM413 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM777 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="ì" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM492 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="í" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM324 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="î" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM708 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="ï" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM161 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM525 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="ð" horiz-adv-x="1165" d="M676 1343q-66 58 -146 113l95 117q118 -84 188 -154l260 146l64 -105l-240 -133q87 -115 126.5 -240.5t39.5 -269.5q0 -253 -71.5 -447t-203 -292t-311.5 -98q-182 0 -284.5 104t-102.5 289q0 160 67.5 298t187 217t267.5 79q105 0 181.5 -45.5t111.5 -124.5l6 2v17 q0 136 -36.5 240t-110.5 197l-270 -149l-56 108zM487 121q107 0 190 56t134 168t51 226q0 118 -65.5 187t-178.5 69q-109 0 -189 -57.5t-123.5 -161t-43.5 -231.5q0 -126 57.5 -191t167.5 -65z" /> +<glyph unicode="ñ" horiz-adv-x="1182" d="M59 0zM729 0l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 -171t-97.5 -269l-101 -475h-168l234 1096h139l-22 -203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 -672h-170zM871 1243 q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" /> +<glyph unicode="ò" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM798 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" /> +<glyph unicode="ó" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM589 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="ô" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM997 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="õ" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM844 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" /> +<glyph unicode="ö" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM433 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM797 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="÷" d="M127 651v142h920v-142h-920zM475 373q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90zM475 1071q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90z" /> +<glyph unicode="ø" horiz-adv-x="1149" d="M1047 705q0 -189 -69.5 -360t-191.5 -266t-276 -95q-146 0 -246 65l-98 -125l-105 82l109 135q-68 103 -68 265q0 194 73.5 361t195.5 255t272 88q146 0 252 -68l104 129l105 -79l-119 -129q62 -97 62 -258zM647 971q-108 0 -195.5 -73t-137.5 -202t-50 -280 q0 -92 17 -137l518 645q-54 47 -152 47zM885 688q0 84 -13 119l-514 -641q57 -45 158 -45q103 0 188.5 71.5t133 200.5t47.5 295z" /> +<glyph unicode="ù" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM800 1241h-104q-61 61 -128.5 154t-95.5 153v21 h181q43 -136 147 -303v-25z" /> +<glyph unicode="ú" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM636 1268q56 60 125.5 151.5t106.5 149.5h190 v-21q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="û" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM1024 1241h-103q-57 48 -161 189 q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="ü" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM457 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="ý" horiz-adv-x="946" d="M0 0zM98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136zM500 1268q56 60 125.5 151.5t106.5 149.5h190v-21 q-38 -49 -140 -151t-177 -156h-105v27z" /> +<glyph unicode="þ" horiz-adv-x="1182" d="M545 -20q-98 0 -172 51t-113 139h-10q-8 -104 -25 -176l-102 -486h-166l432 2048h168q-95 -441 -115 -522t-39 -149h9q101 125 189 177t183 52q139 0 218 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 -98.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295 q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" /> +<glyph unicode="ÿ" horiz-adv-x="946" d="M0 0zM98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136zM335 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM699 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" /> +<glyph unicode="ı" horiz-adv-x="520" d="M227 0h-168l234 1096h168z" /> +<glyph unicode="Œ" horiz-adv-x="1751" d="M1524 0h-674q-78 -20 -158 -20q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q152 0 237 -23h709l-31 -153h-565l-100 -469h528l-31 -150h-528l-115 -538h565zM696 131q69 0 123 19l246 1161q-76 22 -191 22q-157 0 -281 -101t-192.5 -281t-68.5 -398 q0 -199 98 -310.5t266 -111.5z" /> +<glyph unicode="œ" horiz-adv-x="1769" d="M1251 -20q-270 0 -356 225q-69 -107 -171.5 -164t-225.5 -57q-184 0 -292 114t-108 308q0 193 75 360t201 255.5t281 88.5q270 0 359 -225q75 109 177.5 170t221.5 61q139 0 217 -65.5t78 -186.5q0 -183 -164.5 -284t-468.5 -101h-41l-4 -80q0 -131 61.5 -204.5 t190.5 -73.5q75 0 145 24.5t150 59.5v-150q-162 -75 -326 -75zM649 969q-109 0 -196 -73t-135 -202t-48 -284q0 -141 62 -214t172 -73q177 0 278 160.5t101 427.5q0 124 -59.5 191t-174.5 67zM1413 973q-125 0 -220.5 -94.5t-139.5 -260.5h18q231 0 351 61t120 177 q0 48 -32 82.5t-97 34.5z" /> +<glyph unicode="Ÿ" horiz-adv-x="1030" d="M188 0zM537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170zM452 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM816 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22 t-23.5 62z" /> +<glyph unicode="ˆ" horiz-adv-x="1135" d="M1014 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" /> +<glyph unicode="˚" horiz-adv-x="1182" d="M989 1456q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM885 1454q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" /> +<glyph unicode="˜" horiz-adv-x="1135" d="M838 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="635" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="238" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode=" " horiz-adv-x="105" /> +<glyph unicode="‐" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" /> +<glyph unicode="‑" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" /> +<glyph unicode="‒" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" /> +<glyph unicode="–" horiz-adv-x="983" d="M55 469l35 160h823l-34 -160h-824z" /> +<glyph unicode="—" horiz-adv-x="1966" d="M55 469l35 160h1806l-34 -160h-1807z" /> +<glyph unicode="‘" horiz-adv-x="348" d="M129 961l-6 22q98 211 270 479h127q-147 -345 -203 -501h-188z" /> +<glyph unicode="’" horiz-adv-x="348" d="M516 1462l8 -22q-40 -91 -111 -218.5t-159 -260.5h-129q134 298 203 501h188z" /> +<glyph unicode="‚" horiz-adv-x="492" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187z" /> +<glyph unicode="“" horiz-adv-x="719" d="M500 961l-8 22q80 181 272 479h127q-162 -379 -203 -501h-188zM129 961l-6 22q98 211 270 479h127q-147 -345 -203 -501h-188z" /> +<glyph unicode="”" horiz-adv-x="719" d="M516 1462l8 -22q-40 -91 -111 -218.5t-159 -260.5h-129q134 298 203 501h188zM885 1462l10 -22q-94 -206 -274 -479h-127q57 126 115.5 272.5t86.5 228.5h189z" /> +<glyph unicode="„" horiz-adv-x="858" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187zM659 238l9 -23q-95 -205 -271 -479h-129q140 316 203 502h188z" /> +<glyph unicode="•" horiz-adv-x="774" d="M199 684q0 145 73.5 231t198.5 86q92 0 139 -49t47 -141q0 -141 -74 -230t-202 -89q-89 0 -135.5 49.5t-46.5 142.5z" /> +<glyph unicode="…" horiz-adv-x="1563" d="M43 0zM563 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM1085 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM43 74q0 77 40.5 122.5 t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode="‹" horiz-adv-x="580" d="M88 578l391 380l78 -81l-297 -334l172 -381l-113 -49l-231 436v29z" /> +<glyph unicode="›" horiz-adv-x="580" d="M492 496l-392 -381l-77 82l296 333l-172 381l113 50l232 -437v-28z" /> +<glyph unicode="⁄" horiz-adv-x="268" d="M752 1462l-1086 -1462h-153l1085 1462h154z" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode="⁴" horiz-adv-x="717" d="M713 788h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM481 905q69 322 90 395q-20 -36 -110 -149l-205 -246h225z" /> +<glyph unicode="€" d="M928 1329q-140 0 -254 -99t-189 -298h426l-26 -133h-441q-21 -65 -32 -164h381l-29 -131h-361q0 -373 297 -373q123 0 256 55v-147q-127 -59 -278 -59q-212 0 -328.5 133.5t-116.5 378.5v12h-170l27 131h154q8 80 30 164h-151l27 133h159q97 267 259.5 408t369.5 141 q89 0 160 -21.5t141 -70.5l-80 -138q-113 78 -231 78z" /> +<glyph unicode="™" horiz-adv-x="1534" d="M438 741h-121v617h-196v104h516v-104h-199v-617zM1014 741l-189 551h-6q4 -52 4 -121v-430h-118v721h180l182 -557l193 557h170v-721h-121v430q0 73 4 121h-6l-197 -551h-96z" /> +<glyph unicode="" horiz-adv-x="1095" d="M0 1095h1095v-1095h-1095v1095z" /> +<glyph horiz-adv-x="1182" d="M0 0z" /> +<hkern u1=""" u2="Ÿ" k="-20" /> +<hkern u1=""" u2="œ" k="123" /> +<hkern u1=""" u2="ü" k="61" /> +<hkern u1=""" u2="û" k="61" /> +<hkern u1=""" u2="ú" k="61" /> +<hkern u1=""" u2="ù" k="61" /> +<hkern u1=""" u2="ø" k="123" /> +<hkern u1=""" u2="ö" k="123" /> +<hkern u1=""" u2="õ" k="123" /> +<hkern u1=""" u2="ô" k="123" /> +<hkern u1=""" u2="ó" k="123" /> +<hkern u1=""" u2="ò" k="123" /> +<hkern u1=""" u2="ë" k="123" /> +<hkern u1=""" u2="ê" k="123" /> +<hkern u1=""" u2="é" k="123" /> +<hkern u1=""" u2="è" k="123" /> +<hkern u1=""" u2="ç" k="123" /> +<hkern u1=""" u2="æ" k="82" /> +<hkern u1=""" u2="å" k="82" /> +<hkern u1=""" u2="ä" k="82" /> +<hkern u1=""" u2="ã" k="82" /> +<hkern u1=""" u2="â" k="82" /> +<hkern u1=""" u2="á" k="82" /> +<hkern u1=""" u2="à" k="123" /> +<hkern u1=""" u2="Ý" k="-20" /> +<hkern u1=""" u2="Å" k="143" /> +<hkern u1=""" u2="Ä" k="143" /> +<hkern u1=""" u2="Ã" k="143" /> +<hkern u1=""" u2="Â" k="143" /> +<hkern u1=""" u2="Á" k="143" /> +<hkern u1=""" u2="À" k="143" /> +<hkern u1=""" u2="u" k="61" /> +<hkern u1=""" u2="s" k="61" /> +<hkern u1=""" u2="r" k="61" /> +<hkern u1=""" u2="q" k="123" /> +<hkern u1=""" u2="p" k="61" /> +<hkern u1=""" u2="o" k="123" /> +<hkern u1=""" u2="n" k="61" /> +<hkern u1=""" u2="m" k="61" /> +<hkern u1=""" u2="g" k="61" /> +<hkern u1=""" u2="e" k="123" /> +<hkern u1=""" u2="d" k="123" /> +<hkern u1=""" u2="c" k="123" /> +<hkern u1=""" u2="a" k="82" /> +<hkern u1=""" u2="Y" k="-20" /> +<hkern u1=""" u2="W" k="-41" /> +<hkern u1=""" u2="V" k="-41" /> +<hkern u1=""" u2="T" k="-41" /> +<hkern u1=""" u2="A" k="143" /> +<hkern u1="'" u2="Ÿ" k="-20" /> +<hkern u1="'" u2="œ" k="123" /> +<hkern u1="'" u2="ü" k="61" /> +<hkern u1="'" u2="û" k="61" /> +<hkern u1="'" u2="ú" k="61" /> +<hkern u1="'" u2="ù" k="61" /> +<hkern u1="'" u2="ø" k="123" /> +<hkern u1="'" u2="ö" k="123" /> +<hkern u1="'" u2="õ" k="123" /> +<hkern u1="'" u2="ô" k="123" /> +<hkern u1="'" u2="ó" k="123" /> +<hkern u1="'" u2="ò" k="123" /> +<hkern u1="'" u2="ë" k="123" /> +<hkern u1="'" u2="ê" k="123" /> +<hkern u1="'" u2="é" k="123" /> +<hkern u1="'" u2="è" k="123" /> +<hkern u1="'" u2="ç" k="123" /> +<hkern u1="'" u2="æ" k="82" /> +<hkern u1="'" u2="å" k="82" /> +<hkern u1="'" u2="ä" k="82" /> +<hkern u1="'" u2="ã" k="82" /> +<hkern u1="'" u2="â" k="82" /> +<hkern u1="'" u2="á" k="82" /> +<hkern u1="'" u2="à" k="123" /> +<hkern u1="'" u2="Ý" k="-20" /> +<hkern u1="'" u2="Å" k="143" /> +<hkern u1="'" u2="Ä" k="143" /> +<hkern u1="'" u2="Ã" k="143" /> +<hkern u1="'" u2="Â" k="143" /> +<hkern u1="'" u2="Á" k="143" /> +<hkern u1="'" u2="À" k="143" /> +<hkern u1="'" u2="u" k="61" /> +<hkern u1="'" u2="s" k="61" /> +<hkern u1="'" u2="r" k="61" /> +<hkern u1="'" u2="q" k="123" /> +<hkern u1="'" u2="p" k="61" /> +<hkern u1="'" u2="o" k="123" /> +<hkern u1="'" u2="n" k="61" /> +<hkern u1="'" u2="m" k="61" /> +<hkern u1="'" u2="g" k="61" /> +<hkern u1="'" u2="e" k="123" /> +<hkern u1="'" u2="d" k="123" /> +<hkern u1="'" u2="c" k="123" /> +<hkern u1="'" u2="a" k="82" /> +<hkern u1="'" u2="Y" k="-20" /> +<hkern u1="'" u2="W" k="-41" /> +<hkern u1="'" u2="V" k="-41" /> +<hkern u1="'" u2="T" k="-41" /> +<hkern u1="'" u2="A" k="143" /> +<hkern u1="(" u2="J" k="-184" /> +<hkern u1="," u2="Ÿ" k="123" /> +<hkern u1="," u2="Œ" k="102" /> +<hkern u1="," u2="Ý" k="123" /> +<hkern u1="," u2="Ü" k="41" /> +<hkern u1="," u2="Û" k="41" /> +<hkern u1="," u2="Ú" k="41" /> +<hkern u1="," u2="Ù" k="41" /> +<hkern u1="," u2="Ø" k="102" /> +<hkern u1="," u2="Ö" k="102" /> +<hkern u1="," u2="Õ" k="102" /> +<hkern u1="," u2="Ô" k="102" /> +<hkern u1="," u2="Ó" k="102" /> +<hkern u1="," u2="Ò" k="102" /> +<hkern u1="," u2="Ç" k="102" /> +<hkern u1="," u2="Y" k="123" /> +<hkern u1="," u2="W" k="123" /> +<hkern u1="," u2="V" k="123" /> +<hkern u1="," u2="U" k="41" /> +<hkern u1="," u2="T" k="143" /> +<hkern u1="," u2="Q" k="102" /> +<hkern u1="," u2="O" k="102" /> +<hkern u1="," u2="G" k="102" /> +<hkern u1="," u2="C" k="102" /> +<hkern u1="-" u2="T" k="82" /> +<hkern u1="." u2="Ÿ" k="123" /> +<hkern u1="." u2="Œ" k="102" /> +<hkern u1="." u2="Ý" k="123" /> +<hkern u1="." u2="Ü" k="41" /> +<hkern u1="." u2="Û" k="41" /> +<hkern u1="." u2="Ú" k="41" /> +<hkern u1="." u2="Ù" k="41" /> +<hkern u1="." u2="Ø" k="102" /> +<hkern u1="." u2="Ö" k="102" /> +<hkern u1="." u2="Õ" k="102" /> +<hkern u1="." u2="Ô" k="102" /> +<hkern u1="." u2="Ó" k="102" /> +<hkern u1="." u2="Ò" k="102" /> +<hkern u1="." u2="Ç" k="102" /> +<hkern u1="." u2="Y" k="123" /> +<hkern u1="." u2="W" k="123" /> +<hkern u1="." u2="V" k="123" /> +<hkern u1="." u2="U" k="41" /> +<hkern u1="." u2="T" k="143" /> +<hkern u1="." u2="Q" k="102" /> +<hkern u1="." u2="O" k="102" /> +<hkern u1="." u2="G" k="102" /> +<hkern u1="." u2="C" k="102" /> +<hkern u1="A" u2="”" k="143" /> +<hkern u1="A" u2="’" k="143" /> +<hkern u1="A" u2="Ÿ" k="123" /> +<hkern u1="A" u2="Œ" k="41" /> +<hkern u1="A" u2="Ý" k="123" /> +<hkern u1="A" u2="Ø" k="41" /> +<hkern u1="A" u2="Ö" k="41" /> +<hkern u1="A" u2="Õ" k="41" /> +<hkern u1="A" u2="Ô" k="41" /> +<hkern u1="A" u2="Ó" k="41" /> +<hkern u1="A" u2="Ò" k="41" /> +<hkern u1="A" u2="Ç" k="41" /> +<hkern u1="A" u2="Y" k="123" /> +<hkern u1="A" u2="W" k="82" /> +<hkern u1="A" u2="V" k="82" /> +<hkern u1="A" u2="T" k="143" /> +<hkern u1="A" u2="Q" k="41" /> +<hkern u1="A" u2="O" k="41" /> +<hkern u1="A" u2="J" k="-266" /> +<hkern u1="A" u2="G" k="41" /> +<hkern u1="A" u2="C" k="41" /> +<hkern u1="A" u2="'" k="143" /> +<hkern u1="A" u2=""" k="143" /> +<hkern u1="B" u2="„" k="82" /> +<hkern u1="B" u2="‚" k="82" /> +<hkern u1="B" u2="Ÿ" k="20" /> +<hkern u1="B" u2="Ý" k="20" /> +<hkern u1="B" u2="Å" k="41" /> +<hkern u1="B" u2="Ä" k="41" /> +<hkern u1="B" u2="Ã" k="41" /> +<hkern u1="B" u2="Â" k="41" /> +<hkern u1="B" u2="Á" k="41" /> +<hkern u1="B" u2="À" k="41" /> +<hkern u1="B" u2="Z" k="20" /> +<hkern u1="B" u2="Y" k="20" /> +<hkern u1="B" u2="X" k="41" /> +<hkern u1="B" u2="W" k="20" /> +<hkern u1="B" u2="V" k="20" /> +<hkern u1="B" u2="T" k="61" /> +<hkern u1="B" u2="A" k="41" /> +<hkern u1="B" u2="." k="82" /> +<hkern u1="B" u2="," k="82" /> +<hkern u1="C" u2="Œ" k="41" /> +<hkern u1="C" u2="Ø" k="41" /> +<hkern u1="C" u2="Ö" k="41" /> +<hkern u1="C" u2="Õ" k="41" /> +<hkern u1="C" u2="Ô" k="41" /> +<hkern u1="C" u2="Ó" k="41" /> +<hkern u1="C" u2="Ò" k="41" /> +<hkern u1="C" u2="Ç" k="41" /> +<hkern u1="C" u2="Q" k="41" /> +<hkern u1="C" u2="O" k="41" /> +<hkern u1="C" u2="G" k="41" /> +<hkern u1="C" u2="C" k="41" /> +<hkern u1="D" u2="„" k="82" /> +<hkern u1="D" u2="‚" k="82" /> +<hkern u1="D" u2="Ÿ" k="20" /> +<hkern u1="D" u2="Ý" k="20" /> +<hkern u1="D" u2="Å" k="41" /> +<hkern u1="D" u2="Ä" k="41" /> +<hkern u1="D" u2="Ã" k="41" /> +<hkern u1="D" u2="Â" k="41" /> +<hkern u1="D" u2="Á" k="41" /> +<hkern u1="D" u2="À" k="41" /> +<hkern u1="D" u2="Z" k="20" /> +<hkern u1="D" u2="Y" k="20" /> +<hkern u1="D" u2="X" k="41" /> +<hkern u1="D" u2="W" k="20" /> +<hkern u1="D" u2="V" k="20" /> +<hkern u1="D" u2="T" k="61" /> +<hkern u1="D" u2="A" k="41" /> +<hkern u1="D" u2="." k="82" /> +<hkern u1="D" u2="," k="82" /> +<hkern u1="E" u2="J" k="-123" /> +<hkern u1="F" u2="„" k="123" /> +<hkern u1="F" u2="‚" k="123" /> +<hkern u1="F" u2="Å" k="41" /> +<hkern u1="F" u2="Ä" k="41" /> +<hkern u1="F" u2="Ã" k="41" /> +<hkern u1="F" u2="Â" k="41" /> +<hkern u1="F" u2="Á" k="41" /> +<hkern u1="F" u2="À" k="41" /> +<hkern u1="F" u2="A" k="41" /> +<hkern u1="F" u2="?" k="-41" /> +<hkern u1="F" u2="." k="123" /> +<hkern u1="F" u2="," k="123" /> +<hkern u1="K" u2="Œ" k="41" /> +<hkern u1="K" u2="Ø" k="41" /> +<hkern u1="K" u2="Ö" k="41" /> +<hkern u1="K" u2="Õ" k="41" /> +<hkern u1="K" u2="Ô" k="41" /> +<hkern u1="K" u2="Ó" k="41" /> +<hkern u1="K" u2="Ò" k="41" /> +<hkern u1="K" u2="Ç" k="41" /> +<hkern u1="K" u2="Q" k="41" /> +<hkern u1="K" u2="O" k="41" /> +<hkern u1="K" u2="G" k="41" /> +<hkern u1="K" u2="C" k="41" /> +<hkern u1="L" u2="”" k="164" /> +<hkern u1="L" u2="’" k="164" /> +<hkern u1="L" u2="Ÿ" k="61" /> +<hkern u1="L" u2="Œ" k="41" /> +<hkern u1="L" u2="Ý" k="61" /> +<hkern u1="L" u2="Ü" k="20" /> +<hkern u1="L" u2="Û" k="20" /> +<hkern u1="L" u2="Ú" k="20" /> +<hkern u1="L" u2="Ù" k="20" /> +<hkern u1="L" u2="Ø" k="41" /> +<hkern u1="L" u2="Ö" k="41" /> +<hkern u1="L" u2="Õ" k="41" /> +<hkern u1="L" u2="Ô" k="41" /> +<hkern u1="L" u2="Ó" k="41" /> +<hkern u1="L" u2="Ò" k="41" /> +<hkern u1="L" u2="Ç" k="41" /> +<hkern u1="L" u2="Y" k="61" /> +<hkern u1="L" u2="W" k="41" /> +<hkern u1="L" u2="V" k="41" /> +<hkern u1="L" u2="U" k="20" /> +<hkern u1="L" u2="T" k="41" /> +<hkern u1="L" u2="Q" k="41" /> +<hkern u1="L" u2="O" k="41" /> +<hkern u1="L" u2="G" k="41" /> +<hkern u1="L" u2="C" k="41" /> +<hkern u1="L" u2="'" k="164" /> +<hkern u1="L" u2=""" k="164" /> +<hkern u1="O" u2="„" k="82" /> +<hkern u1="O" u2="‚" k="82" /> +<hkern u1="O" u2="Ÿ" k="20" /> +<hkern u1="O" u2="Ý" k="20" /> +<hkern u1="O" u2="Å" k="41" /> +<hkern u1="O" u2="Ä" k="41" /> +<hkern u1="O" u2="Ã" k="41" /> +<hkern u1="O" u2="Â" k="41" /> +<hkern u1="O" u2="Á" k="41" /> +<hkern u1="O" u2="À" k="41" /> +<hkern u1="O" u2="Z" k="20" /> +<hkern u1="O" u2="Y" k="20" /> +<hkern u1="O" u2="X" k="41" /> +<hkern u1="O" u2="W" k="20" /> +<hkern u1="O" u2="V" k="20" /> +<hkern u1="O" u2="T" k="61" /> +<hkern u1="O" u2="A" k="41" /> +<hkern u1="O" u2="." k="82" /> +<hkern u1="O" u2="," k="82" /> +<hkern u1="P" u2="„" k="266" /> +<hkern u1="P" u2="‚" k="266" /> +<hkern u1="P" u2="Å" k="102" /> +<hkern u1="P" u2="Ä" k="102" /> +<hkern u1="P" u2="Ã" k="102" /> +<hkern u1="P" u2="Â" k="102" /> +<hkern u1="P" u2="Á" k="102" /> +<hkern u1="P" u2="À" k="102" /> +<hkern u1="P" u2="Z" k="20" /> +<hkern u1="P" u2="X" k="41" /> +<hkern u1="P" u2="A" k="102" /> +<hkern u1="P" u2="." k="266" /> +<hkern u1="P" u2="," k="266" /> +<hkern u1="Q" u2="„" k="82" /> +<hkern u1="Q" u2="‚" k="82" /> +<hkern u1="Q" u2="Ÿ" k="20" /> +<hkern u1="Q" u2="Ý" k="20" /> +<hkern u1="Q" u2="Å" k="41" /> +<hkern u1="Q" u2="Ä" k="41" /> +<hkern u1="Q" u2="Ã" k="41" /> +<hkern u1="Q" u2="Â" k="41" /> +<hkern u1="Q" u2="Á" k="41" /> +<hkern u1="Q" u2="À" k="41" /> +<hkern u1="Q" u2="Z" k="20" /> +<hkern u1="Q" u2="Y" k="20" /> +<hkern u1="Q" u2="X" k="41" /> +<hkern u1="Q" u2="W" k="20" /> +<hkern u1="Q" u2="V" k="20" /> +<hkern u1="Q" u2="T" k="61" /> +<hkern u1="Q" u2="A" k="41" /> +<hkern u1="Q" u2="." k="82" /> +<hkern u1="Q" u2="," k="82" /> +<hkern u1="T" u2="„" k="123" /> +<hkern u1="T" u2="‚" k="123" /> +<hkern u1="T" u2="—" k="82" /> +<hkern u1="T" u2="–" k="82" /> +<hkern u1="T" u2="œ" k="143" /> +<hkern u1="T" u2="Œ" k="41" /> +<hkern u1="T" u2="ý" k="41" /> +<hkern u1="T" u2="ü" k="102" /> +<hkern u1="T" u2="û" k="102" /> +<hkern u1="T" u2="ú" k="102" /> +<hkern u1="T" u2="ù" k="102" /> +<hkern u1="T" u2="ø" k="143" /> +<hkern u1="T" u2="ö" k="143" /> +<hkern u1="T" u2="õ" k="143" /> +<hkern u1="T" u2="ô" k="143" /> +<hkern u1="T" u2="ó" k="143" /> +<hkern u1="T" u2="ò" k="143" /> +<hkern u1="T" u2="ë" k="143" /> +<hkern u1="T" u2="ê" k="143" /> +<hkern u1="T" u2="é" k="143" /> +<hkern u1="T" u2="è" k="143" /> +<hkern u1="T" u2="ç" k="143" /> +<hkern u1="T" u2="æ" k="164" /> +<hkern u1="T" u2="å" k="164" /> +<hkern u1="T" u2="ä" k="164" /> +<hkern u1="T" u2="ã" k="164" /> +<hkern u1="T" u2="â" k="164" /> +<hkern u1="T" u2="á" k="164" /> +<hkern u1="T" u2="à" k="143" /> +<hkern u1="T" u2="Ø" k="41" /> +<hkern u1="T" u2="Ö" k="41" /> +<hkern u1="T" u2="Õ" k="41" /> +<hkern u1="T" u2="Ô" k="41" /> +<hkern u1="T" u2="Ó" k="41" /> +<hkern u1="T" u2="Ò" k="41" /> +<hkern u1="T" u2="Ç" k="41" /> +<hkern u1="T" u2="Å" k="143" /> +<hkern u1="T" u2="Ä" k="143" /> +<hkern u1="T" u2="Ã" k="143" /> +<hkern u1="T" u2="Â" k="143" /> +<hkern u1="T" u2="Á" k="143" /> +<hkern u1="T" u2="À" k="143" /> +<hkern u1="T" u2="z" k="82" /> +<hkern u1="T" u2="y" k="41" /> +<hkern u1="T" u2="x" k="41" /> +<hkern u1="T" u2="w" k="41" /> +<hkern u1="T" u2="v" k="41" /> +<hkern u1="T" u2="u" k="102" /> +<hkern u1="T" u2="s" k="123" /> +<hkern u1="T" u2="r" k="102" /> +<hkern u1="T" u2="q" k="143" /> +<hkern u1="T" u2="p" k="102" /> +<hkern u1="T" u2="o" k="143" /> +<hkern u1="T" u2="n" k="102" /> +<hkern u1="T" u2="m" k="102" /> +<hkern u1="T" u2="g" k="143" /> +<hkern u1="T" u2="e" k="143" /> +<hkern u1="T" u2="d" k="143" /> +<hkern u1="T" u2="c" k="143" /> +<hkern u1="T" u2="a" k="164" /> +<hkern u1="T" u2="T" k="-41" /> +<hkern u1="T" u2="Q" k="41" /> +<hkern u1="T" u2="O" k="41" /> +<hkern u1="T" u2="G" k="41" /> +<hkern u1="T" u2="C" k="41" /> +<hkern u1="T" u2="A" k="143" /> +<hkern u1="T" u2="?" k="-41" /> +<hkern u1="T" u2="." k="123" /> +<hkern u1="T" u2="-" k="82" /> +<hkern u1="T" u2="," k="123" /> +<hkern u1="U" u2="„" k="41" /> +<hkern u1="U" u2="‚" k="41" /> +<hkern u1="U" u2="Å" k="20" /> +<hkern u1="U" u2="Ä" k="20" /> +<hkern u1="U" u2="Ã" k="20" /> +<hkern u1="U" u2="Â" k="20" /> +<hkern u1="U" u2="Á" k="20" /> +<hkern u1="U" u2="À" k="20" /> +<hkern u1="U" u2="A" k="20" /> +<hkern u1="U" u2="." k="41" /> +<hkern u1="U" u2="," k="41" /> +<hkern u1="V" u2="„" k="102" /> +<hkern u1="V" u2="‚" k="102" /> +<hkern u1="V" u2="œ" k="41" /> +<hkern u1="V" u2="Œ" k="20" /> +<hkern u1="V" u2="ü" k="20" /> +<hkern u1="V" u2="û" k="20" /> +<hkern u1="V" u2="ú" k="20" /> +<hkern u1="V" u2="ù" k="20" /> +<hkern u1="V" u2="ø" k="41" /> +<hkern u1="V" u2="ö" k="41" /> +<hkern u1="V" u2="õ" k="41" /> +<hkern u1="V" u2="ô" k="41" /> +<hkern u1="V" u2="ó" k="41" /> +<hkern u1="V" u2="ò" k="41" /> +<hkern u1="V" u2="ë" k="41" /> +<hkern u1="V" u2="ê" k="41" /> +<hkern u1="V" u2="é" k="41" /> +<hkern u1="V" u2="è" k="41" /> +<hkern u1="V" u2="ç" k="41" /> +<hkern u1="V" u2="æ" k="41" /> +<hkern u1="V" u2="å" k="41" /> +<hkern u1="V" u2="ä" k="41" /> +<hkern u1="V" u2="ã" k="41" /> +<hkern u1="V" u2="â" k="41" /> +<hkern u1="V" u2="á" k="41" /> +<hkern u1="V" u2="à" k="41" /> +<hkern u1="V" u2="Ø" k="20" /> +<hkern u1="V" u2="Ö" k="20" /> +<hkern u1="V" u2="Õ" k="20" /> +<hkern u1="V" u2="Ô" k="20" /> +<hkern u1="V" u2="Ó" k="20" /> +<hkern u1="V" u2="Ò" k="20" /> +<hkern u1="V" u2="Ç" k="20" /> +<hkern u1="V" u2="Å" k="82" /> +<hkern u1="V" u2="Ä" k="82" /> +<hkern u1="V" u2="Ã" k="82" /> +<hkern u1="V" u2="Â" k="82" /> +<hkern u1="V" u2="Á" k="82" /> +<hkern u1="V" u2="À" k="82" /> +<hkern u1="V" u2="u" k="20" /> +<hkern u1="V" u2="s" k="20" /> +<hkern u1="V" u2="r" k="20" /> +<hkern u1="V" u2="q" k="41" /> +<hkern u1="V" u2="p" k="20" /> +<hkern u1="V" u2="o" k="41" /> +<hkern u1="V" u2="n" k="20" /> +<hkern u1="V" u2="m" k="20" /> +<hkern u1="V" u2="g" k="20" /> +<hkern u1="V" u2="e" k="41" /> +<hkern u1="V" u2="d" k="41" /> +<hkern u1="V" u2="c" k="41" /> +<hkern u1="V" u2="a" k="41" /> +<hkern u1="V" u2="Q" k="20" /> +<hkern u1="V" u2="O" k="20" /> +<hkern u1="V" u2="G" k="20" /> +<hkern u1="V" u2="C" k="20" /> +<hkern u1="V" u2="A" k="82" /> +<hkern u1="V" u2="?" k="-41" /> +<hkern u1="V" u2="." k="102" /> +<hkern u1="V" u2="," k="102" /> +<hkern u1="W" u2="„" k="102" /> +<hkern u1="W" u2="‚" k="102" /> +<hkern u1="W" u2="œ" k="41" /> +<hkern u1="W" u2="Œ" k="20" /> +<hkern u1="W" u2="ü" k="20" /> +<hkern u1="W" u2="û" k="20" /> +<hkern u1="W" u2="ú" k="20" /> +<hkern u1="W" u2="ù" k="20" /> +<hkern u1="W" u2="ø" k="41" /> +<hkern u1="W" u2="ö" k="41" /> +<hkern u1="W" u2="õ" k="41" /> +<hkern u1="W" u2="ô" k="41" /> +<hkern u1="W" u2="ó" k="41" /> +<hkern u1="W" u2="ò" k="41" /> +<hkern u1="W" u2="ë" k="41" /> +<hkern u1="W" u2="ê" k="41" /> +<hkern u1="W" u2="é" k="41" /> +<hkern u1="W" u2="è" k="41" /> +<hkern u1="W" u2="ç" k="41" /> +<hkern u1="W" u2="æ" k="41" /> +<hkern u1="W" u2="å" k="41" /> +<hkern u1="W" u2="ä" k="41" /> +<hkern u1="W" u2="ã" k="41" /> +<hkern u1="W" u2="â" k="41" /> +<hkern u1="W" u2="á" k="41" /> +<hkern u1="W" u2="à" k="41" /> +<hkern u1="W" u2="Ø" k="20" /> +<hkern u1="W" u2="Ö" k="20" /> +<hkern u1="W" u2="Õ" k="20" /> +<hkern u1="W" u2="Ô" k="20" /> +<hkern u1="W" u2="Ó" k="20" /> +<hkern u1="W" u2="Ò" k="20" /> +<hkern u1="W" u2="Ç" k="20" /> +<hkern u1="W" u2="Å" k="82" /> +<hkern u1="W" u2="Ä" k="82" /> +<hkern u1="W" u2="Ã" k="82" /> +<hkern u1="W" u2="Â" k="82" /> +<hkern u1="W" u2="Á" k="82" /> +<hkern u1="W" u2="À" k="82" /> +<hkern u1="W" u2="u" k="20" /> +<hkern u1="W" u2="s" k="20" /> +<hkern u1="W" u2="r" k="20" /> +<hkern u1="W" u2="q" k="41" /> +<hkern u1="W" u2="p" k="20" /> +<hkern u1="W" u2="o" k="41" /> +<hkern u1="W" u2="n" k="20" /> +<hkern u1="W" u2="m" k="20" /> +<hkern u1="W" u2="g" k="20" /> +<hkern u1="W" u2="e" k="41" /> +<hkern u1="W" u2="d" k="41" /> +<hkern u1="W" u2="c" k="41" /> +<hkern u1="W" u2="a" k="41" /> +<hkern u1="W" u2="Q" k="20" /> +<hkern u1="W" u2="O" k="20" /> +<hkern u1="W" u2="G" k="20" /> +<hkern u1="W" u2="C" k="20" /> +<hkern u1="W" u2="A" k="82" /> +<hkern u1="W" u2="?" k="-41" /> +<hkern u1="W" u2="." k="102" /> +<hkern u1="W" u2="," k="102" /> +<hkern u1="X" u2="Œ" k="41" /> +<hkern u1="X" u2="Ø" k="41" /> +<hkern u1="X" u2="Ö" k="41" /> +<hkern u1="X" u2="Õ" k="41" /> +<hkern u1="X" u2="Ô" k="41" /> +<hkern u1="X" u2="Ó" k="41" /> +<hkern u1="X" u2="Ò" k="41" /> +<hkern u1="X" u2="Ç" k="41" /> +<hkern u1="X" u2="Q" k="41" /> +<hkern u1="X" u2="O" k="41" /> +<hkern u1="X" u2="G" k="41" /> +<hkern u1="X" u2="C" k="41" /> +<hkern u1="Y" u2="„" k="123" /> +<hkern u1="Y" u2="‚" k="123" /> +<hkern u1="Y" u2="œ" k="102" /> +<hkern u1="Y" u2="Œ" k="41" /> +<hkern u1="Y" u2="ü" k="61" /> +<hkern u1="Y" u2="û" k="61" /> +<hkern u1="Y" u2="ú" k="61" /> +<hkern u1="Y" u2="ù" k="61" /> +<hkern u1="Y" u2="ø" k="102" /> +<hkern u1="Y" u2="ö" k="102" /> +<hkern u1="Y" u2="õ" k="102" /> +<hkern u1="Y" u2="ô" k="102" /> +<hkern u1="Y" u2="ó" k="102" /> +<hkern u1="Y" u2="ò" k="102" /> +<hkern u1="Y" u2="ë" k="102" /> +<hkern u1="Y" u2="ê" k="102" /> +<hkern u1="Y" u2="é" k="102" /> +<hkern u1="Y" u2="è" k="102" /> +<hkern u1="Y" u2="ç" k="102" /> +<hkern u1="Y" u2="æ" k="102" /> +<hkern u1="Y" u2="å" k="102" /> +<hkern u1="Y" u2="ä" k="102" /> +<hkern u1="Y" u2="ã" k="102" /> +<hkern u1="Y" u2="â" k="102" /> +<hkern u1="Y" u2="á" k="102" /> +<hkern u1="Y" u2="à" k="102" /> +<hkern u1="Y" u2="Ø" k="41" /> +<hkern u1="Y" u2="Ö" k="41" /> +<hkern u1="Y" u2="Õ" k="41" /> +<hkern u1="Y" u2="Ô" k="41" /> +<hkern u1="Y" u2="Ó" k="41" /> +<hkern u1="Y" u2="Ò" k="41" /> +<hkern u1="Y" u2="Ç" k="41" /> +<hkern u1="Y" u2="Å" k="123" /> +<hkern u1="Y" u2="Ä" k="123" /> +<hkern u1="Y" u2="Ã" k="123" /> +<hkern u1="Y" u2="Â" k="123" /> +<hkern u1="Y" u2="Á" k="123" /> +<hkern u1="Y" u2="À" k="123" /> +<hkern u1="Y" u2="z" k="41" /> +<hkern u1="Y" u2="u" k="61" /> +<hkern u1="Y" u2="s" k="82" /> +<hkern u1="Y" u2="r" k="61" /> +<hkern u1="Y" u2="q" k="102" /> +<hkern u1="Y" u2="p" k="61" /> +<hkern u1="Y" u2="o" k="102" /> +<hkern u1="Y" u2="n" k="61" /> +<hkern u1="Y" u2="m" k="61" /> +<hkern u1="Y" u2="g" k="41" /> +<hkern u1="Y" u2="e" k="102" /> +<hkern u1="Y" u2="d" k="102" /> +<hkern u1="Y" u2="c" k="102" /> +<hkern u1="Y" u2="a" k="102" /> +<hkern u1="Y" u2="Q" k="41" /> +<hkern u1="Y" u2="O" k="41" /> +<hkern u1="Y" u2="G" k="41" /> +<hkern u1="Y" u2="C" k="41" /> +<hkern u1="Y" u2="A" k="123" /> +<hkern u1="Y" u2="?" k="-41" /> +<hkern u1="Y" u2="." k="123" /> +<hkern u1="Y" u2="," k="123" /> +<hkern u1="Z" u2="Œ" k="20" /> +<hkern u1="Z" u2="Ø" k="20" /> +<hkern u1="Z" u2="Ö" k="20" /> +<hkern u1="Z" u2="Õ" k="20" /> +<hkern u1="Z" u2="Ô" k="20" /> +<hkern u1="Z" u2="Ó" k="20" /> +<hkern u1="Z" u2="Ò" k="20" /> +<hkern u1="Z" u2="Ç" k="20" /> +<hkern u1="Z" u2="Q" k="20" /> +<hkern u1="Z" u2="O" k="20" /> +<hkern u1="Z" u2="G" k="20" /> +<hkern u1="Z" u2="C" k="20" /> +<hkern u1="[" u2="J" k="-184" /> +<hkern u1="a" u2="”" k="20" /> +<hkern u1="a" u2="’" k="20" /> +<hkern u1="a" u2="'" k="20" /> +<hkern u1="a" u2=""" k="20" /> +<hkern u1="b" u2="”" k="20" /> +<hkern u1="b" u2="’" k="20" /> +<hkern u1="b" u2="ý" k="41" /> +<hkern u1="b" u2="z" k="20" /> +<hkern u1="b" u2="y" k="41" /> +<hkern u1="b" u2="x" k="41" /> +<hkern u1="b" u2="w" k="41" /> +<hkern u1="b" u2="v" k="41" /> +<hkern u1="b" u2="'" k="20" /> +<hkern u1="b" u2=""" k="20" /> +<hkern u1="c" u2="”" k="-41" /> +<hkern u1="c" u2="’" k="-41" /> +<hkern u1="c" u2="'" k="-41" /> +<hkern u1="c" u2=""" k="-41" /> +<hkern u1="e" u2="”" k="20" /> +<hkern u1="e" u2="’" k="20" /> +<hkern u1="e" u2="ý" k="41" /> +<hkern u1="e" u2="z" k="20" /> +<hkern u1="e" u2="y" k="41" /> +<hkern u1="e" u2="x" k="41" /> +<hkern u1="e" u2="w" k="41" /> +<hkern u1="e" u2="v" k="41" /> +<hkern u1="e" u2="'" k="20" /> +<hkern u1="e" u2=""" k="20" /> +<hkern u1="f" u2="”" k="-123" /> +<hkern u1="f" u2="’" k="-123" /> +<hkern u1="f" u2="'" k="-123" /> +<hkern u1="f" u2=""" k="-123" /> +<hkern u1="h" u2="”" k="20" /> +<hkern u1="h" u2="’" k="20" /> +<hkern u1="h" u2="'" k="20" /> +<hkern u1="h" u2=""" k="20" /> +<hkern u1="k" u2="œ" k="41" /> +<hkern u1="k" u2="ø" k="41" /> +<hkern u1="k" u2="ö" k="41" /> +<hkern u1="k" u2="õ" k="41" /> +<hkern u1="k" u2="ô" k="41" /> +<hkern u1="k" u2="ó" k="41" /> +<hkern u1="k" u2="ò" k="41" /> +<hkern u1="k" u2="ë" k="41" /> +<hkern u1="k" u2="ê" k="41" /> +<hkern u1="k" u2="é" k="41" /> +<hkern u1="k" u2="è" k="41" /> +<hkern u1="k" u2="ç" k="41" /> +<hkern u1="k" u2="à" k="41" /> +<hkern u1="k" u2="q" k="41" /> +<hkern u1="k" u2="o" k="41" /> +<hkern u1="k" u2="e" k="41" /> +<hkern u1="k" u2="d" k="41" /> +<hkern u1="k" u2="c" k="41" /> +<hkern u1="m" u2="”" k="20" /> +<hkern u1="m" u2="’" k="20" /> +<hkern u1="m" u2="'" k="20" /> +<hkern u1="m" u2=""" k="20" /> +<hkern u1="n" u2="”" k="20" /> +<hkern u1="n" u2="’" k="20" /> +<hkern u1="n" u2="'" k="20" /> +<hkern u1="n" u2=""" k="20" /> +<hkern u1="o" u2="”" k="20" /> +<hkern u1="o" u2="’" k="20" /> +<hkern u1="o" u2="ý" k="41" /> +<hkern u1="o" u2="z" k="20" /> +<hkern u1="o" u2="y" k="41" /> +<hkern u1="o" u2="x" k="41" /> +<hkern u1="o" u2="w" k="41" /> +<hkern u1="o" u2="v" k="41" /> +<hkern u1="o" u2="'" k="20" /> +<hkern u1="o" u2=""" k="20" /> +<hkern u1="p" u2="”" k="20" /> +<hkern u1="p" u2="’" k="20" /> +<hkern u1="p" u2="ý" k="41" /> +<hkern u1="p" u2="z" k="20" /> +<hkern u1="p" u2="y" k="41" /> +<hkern u1="p" u2="x" k="41" /> +<hkern u1="p" u2="w" k="41" /> +<hkern u1="p" u2="v" k="41" /> +<hkern u1="p" u2="'" k="20" /> +<hkern u1="p" u2=""" k="20" /> +<hkern u1="r" u2="”" k="-82" /> +<hkern u1="r" u2="’" k="-82" /> +<hkern u1="r" u2="œ" k="41" /> +<hkern u1="r" u2="ø" k="41" /> +<hkern u1="r" u2="ö" k="41" /> +<hkern u1="r" u2="õ" k="41" /> +<hkern u1="r" u2="ô" k="41" /> +<hkern u1="r" u2="ó" k="41" /> +<hkern u1="r" u2="ò" k="41" /> +<hkern u1="r" u2="ë" k="41" /> +<hkern u1="r" u2="ê" k="41" /> +<hkern u1="r" u2="é" k="41" /> +<hkern u1="r" u2="è" k="41" /> +<hkern u1="r" u2="ç" k="41" /> +<hkern u1="r" u2="æ" k="41" /> +<hkern u1="r" u2="å" k="41" /> +<hkern u1="r" u2="ä" k="41" /> +<hkern u1="r" u2="ã" k="41" /> +<hkern u1="r" u2="â" k="41" /> +<hkern u1="r" u2="á" k="41" /> +<hkern u1="r" u2="à" k="41" /> +<hkern u1="r" u2="q" k="41" /> +<hkern u1="r" u2="o" k="41" /> +<hkern u1="r" u2="g" k="20" /> +<hkern u1="r" u2="e" k="41" /> +<hkern u1="r" u2="d" k="41" /> +<hkern u1="r" u2="c" k="41" /> +<hkern u1="r" u2="a" k="41" /> +<hkern u1="r" u2="'" k="-82" /> +<hkern u1="r" u2=""" k="-82" /> +<hkern u1="t" u2="”" k="-41" /> +<hkern u1="t" u2="’" k="-41" /> +<hkern u1="t" u2="'" k="-41" /> +<hkern u1="t" u2=""" k="-41" /> +<hkern u1="v" u2="„" k="82" /> +<hkern u1="v" u2="”" k="-82" /> +<hkern u1="v" u2="‚" k="82" /> +<hkern u1="v" u2="’" k="-82" /> +<hkern u1="v" u2="?" k="-41" /> +<hkern u1="v" u2="." k="82" /> +<hkern u1="v" u2="," k="82" /> +<hkern u1="v" u2="'" k="-82" /> +<hkern u1="v" u2=""" k="-82" /> +<hkern u1="w" u2="„" k="82" /> +<hkern u1="w" u2="”" k="-82" /> +<hkern u1="w" u2="‚" k="82" /> +<hkern u1="w" u2="’" k="-82" /> +<hkern u1="w" u2="?" k="-41" /> +<hkern u1="w" u2="." k="82" /> +<hkern u1="w" u2="," k="82" /> +<hkern u1="w" u2="'" k="-82" /> +<hkern u1="w" u2=""" k="-82" /> +<hkern u1="x" u2="œ" k="41" /> +<hkern u1="x" u2="ø" k="41" /> +<hkern u1="x" u2="ö" k="41" /> +<hkern u1="x" u2="õ" k="41" /> +<hkern u1="x" u2="ô" k="41" /> +<hkern u1="x" u2="ó" k="41" /> +<hkern u1="x" u2="ò" k="41" /> +<hkern u1="x" u2="ë" k="41" /> +<hkern u1="x" u2="ê" k="41" /> +<hkern u1="x" u2="é" k="41" /> +<hkern u1="x" u2="è" k="41" /> +<hkern u1="x" u2="ç" k="41" /> +<hkern u1="x" u2="à" k="41" /> +<hkern u1="x" u2="q" k="41" /> +<hkern u1="x" u2="o" k="41" /> +<hkern u1="x" u2="e" k="41" /> +<hkern u1="x" u2="d" k="41" /> +<hkern u1="x" u2="c" k="41" /> +<hkern u1="y" u2="„" k="82" /> +<hkern u1="y" u2="”" k="-82" /> +<hkern u1="y" u2="‚" k="82" /> +<hkern u1="y" u2="’" k="-82" /> +<hkern u1="y" u2="?" k="-41" /> +<hkern u1="y" u2="." k="82" /> +<hkern u1="y" u2="," k="82" /> +<hkern u1="y" u2="'" k="-82" /> +<hkern u1="y" u2=""" k="-82" /> +<hkern u1="{" u2="J" k="-184" /> +<hkern u1="À" u2="”" k="143" /> +<hkern u1="À" u2="’" k="143" /> +<hkern u1="À" u2="Ÿ" k="123" /> +<hkern u1="À" u2="Œ" k="41" /> +<hkern u1="À" u2="Ý" k="123" /> +<hkern u1="À" u2="Ø" k="41" /> +<hkern u1="À" u2="Ö" k="41" /> +<hkern u1="À" u2="Õ" k="41" /> +<hkern u1="À" u2="Ô" k="41" /> +<hkern u1="À" u2="Ó" k="41" /> +<hkern u1="À" u2="Ò" k="41" /> +<hkern u1="À" u2="Ç" k="41" /> +<hkern u1="À" u2="Y" k="123" /> +<hkern u1="À" u2="W" k="82" /> +<hkern u1="À" u2="V" k="82" /> +<hkern u1="À" u2="T" k="143" /> +<hkern u1="À" u2="Q" k="41" /> +<hkern u1="À" u2="O" k="41" /> +<hkern u1="À" u2="J" k="-266" /> +<hkern u1="À" u2="G" k="41" /> +<hkern u1="À" u2="C" k="41" /> +<hkern u1="À" u2="'" k="143" /> +<hkern u1="À" u2=""" k="143" /> +<hkern u1="Á" u2="”" k="143" /> +<hkern u1="Á" u2="’" k="143" /> +<hkern u1="Á" u2="Ÿ" k="123" /> +<hkern u1="Á" u2="Œ" k="41" /> +<hkern u1="Á" u2="Ý" k="123" /> +<hkern u1="Á" u2="Ø" k="41" /> +<hkern u1="Á" u2="Ö" k="41" /> +<hkern u1="Á" u2="Õ" k="41" /> +<hkern u1="Á" u2="Ô" k="41" /> +<hkern u1="Á" u2="Ó" k="41" /> +<hkern u1="Á" u2="Ò" k="41" /> +<hkern u1="Á" u2="Ç" k="41" /> +<hkern u1="Á" u2="Y" k="123" /> +<hkern u1="Á" u2="W" k="82" /> +<hkern u1="Á" u2="V" k="82" /> +<hkern u1="Á" u2="T" k="143" /> +<hkern u1="Á" u2="Q" k="41" /> +<hkern u1="Á" u2="O" k="41" /> +<hkern u1="Á" u2="J" k="-266" /> +<hkern u1="Á" u2="G" k="41" /> +<hkern u1="Á" u2="C" k="41" /> +<hkern u1="Á" u2="'" k="143" /> +<hkern u1="Á" u2=""" k="143" /> +<hkern u1="Â" u2="”" k="143" /> +<hkern u1="Â" u2="’" k="143" /> +<hkern u1="Â" u2="Ÿ" k="123" /> +<hkern u1="Â" u2="Œ" k="41" /> +<hkern u1="Â" u2="Ý" k="123" /> +<hkern u1="Â" u2="Ø" k="41" /> +<hkern u1="Â" u2="Ö" k="41" /> +<hkern u1="Â" u2="Õ" k="41" /> +<hkern u1="Â" u2="Ô" k="41" /> +<hkern u1="Â" u2="Ó" k="41" /> +<hkern u1="Â" u2="Ò" k="41" /> +<hkern u1="Â" u2="Ç" k="41" /> +<hkern u1="Â" u2="Y" k="123" /> +<hkern u1="Â" u2="W" k="82" /> +<hkern u1="Â" u2="V" k="82" /> +<hkern u1="Â" u2="T" k="143" /> +<hkern u1="Â" u2="Q" k="41" /> +<hkern u1="Â" u2="O" k="41" /> +<hkern u1="Â" u2="J" k="-266" /> +<hkern u1="Â" u2="G" k="41" /> +<hkern u1="Â" u2="C" k="41" /> +<hkern u1="Â" u2="'" k="143" /> +<hkern u1="Â" u2=""" k="143" /> +<hkern u1="Ã" u2="”" k="143" /> +<hkern u1="Ã" u2="’" k="143" /> +<hkern u1="Ã" u2="Ÿ" k="123" /> +<hkern u1="Ã" u2="Œ" k="41" /> +<hkern u1="Ã" u2="Ý" k="123" /> +<hkern u1="Ã" u2="Ø" k="41" /> +<hkern u1="Ã" u2="Ö" k="41" /> +<hkern u1="Ã" u2="Õ" k="41" /> +<hkern u1="Ã" u2="Ô" k="41" /> +<hkern u1="Ã" u2="Ó" k="41" /> +<hkern u1="Ã" u2="Ò" k="41" /> +<hkern u1="Ã" u2="Ç" k="41" /> +<hkern u1="Ã" u2="Y" k="123" /> +<hkern u1="Ã" u2="W" k="82" /> +<hkern u1="Ã" u2="V" k="82" /> +<hkern u1="Ã" u2="T" k="143" /> +<hkern u1="Ã" u2="Q" k="41" /> +<hkern u1="Ã" u2="O" k="41" /> +<hkern u1="Ã" u2="J" k="-266" /> +<hkern u1="Ã" u2="G" k="41" /> +<hkern u1="Ã" u2="C" k="41" /> +<hkern u1="Ã" u2="'" k="143" /> +<hkern u1="Ã" u2=""" k="143" /> +<hkern u1="Ä" u2="”" k="143" /> +<hkern u1="Ä" u2="’" k="143" /> +<hkern u1="Ä" u2="Ÿ" k="123" /> +<hkern u1="Ä" u2="Œ" k="41" /> +<hkern u1="Ä" u2="Ý" k="123" /> +<hkern u1="Ä" u2="Ø" k="41" /> +<hkern u1="Ä" u2="Ö" k="41" /> +<hkern u1="Ä" u2="Õ" k="41" /> +<hkern u1="Ä" u2="Ô" k="41" /> +<hkern u1="Ä" u2="Ó" k="41" /> +<hkern u1="Ä" u2="Ò" k="41" /> +<hkern u1="Ä" u2="Ç" k="41" /> +<hkern u1="Ä" u2="Y" k="123" /> +<hkern u1="Ä" u2="W" k="82" /> +<hkern u1="Ä" u2="V" k="82" /> +<hkern u1="Ä" u2="T" k="143" /> +<hkern u1="Ä" u2="Q" k="41" /> +<hkern u1="Ä" u2="O" k="41" /> +<hkern u1="Ä" u2="J" k="-266" /> +<hkern u1="Ä" u2="G" k="41" /> +<hkern u1="Ä" u2="C" k="41" /> +<hkern u1="Ä" u2="'" k="143" /> +<hkern u1="Ä" u2=""" k="143" /> +<hkern u1="Å" u2="”" k="143" /> +<hkern u1="Å" u2="’" k="143" /> +<hkern u1="Å" u2="Ÿ" k="123" /> +<hkern u1="Å" u2="Œ" k="41" /> +<hkern u1="Å" u2="Ý" k="123" /> +<hkern u1="Å" u2="Ø" k="41" /> +<hkern u1="Å" u2="Ö" k="41" /> +<hkern u1="Å" u2="Õ" k="41" /> +<hkern u1="Å" u2="Ô" k="41" /> +<hkern u1="Å" u2="Ó" k="41" /> +<hkern u1="Å" u2="Ò" k="41" /> +<hkern u1="Å" u2="Ç" k="41" /> +<hkern u1="Å" u2="Y" k="123" /> +<hkern u1="Å" u2="W" k="82" /> +<hkern u1="Å" u2="V" k="82" /> +<hkern u1="Å" u2="T" k="143" /> +<hkern u1="Å" u2="Q" k="41" /> +<hkern u1="Å" u2="O" k="41" /> +<hkern u1="Å" u2="J" k="-266" /> +<hkern u1="Å" u2="G" k="41" /> +<hkern u1="Å" u2="C" k="41" /> +<hkern u1="Å" u2="'" k="143" /> +<hkern u1="Å" u2=""" k="143" /> +<hkern u1="Æ" u2="J" k="-123" /> +<hkern u1="Ç" u2="Œ" k="41" /> +<hkern u1="Ç" u2="Ø" k="41" /> +<hkern u1="Ç" u2="Ö" k="41" /> +<hkern u1="Ç" u2="Õ" k="41" /> +<hkern u1="Ç" u2="Ô" k="41" /> +<hkern u1="Ç" u2="Ó" k="41" /> +<hkern u1="Ç" u2="Ò" k="41" /> +<hkern u1="Ç" u2="Ç" k="41" /> +<hkern u1="Ç" u2="Q" k="41" /> +<hkern u1="Ç" u2="O" k="41" /> +<hkern u1="Ç" u2="G" k="41" /> +<hkern u1="Ç" u2="C" k="41" /> +<hkern u1="È" u2="J" k="-123" /> +<hkern u1="É" u2="J" k="-123" /> +<hkern u1="Ê" u2="J" k="-123" /> +<hkern u1="Ë" u2="J" k="-123" /> +<hkern u1="Ð" u2="„" k="82" /> +<hkern u1="Ð" u2="‚" k="82" /> +<hkern u1="Ð" u2="Ÿ" k="20" /> +<hkern u1="Ð" u2="Ý" k="20" /> +<hkern u1="Ð" u2="Å" k="41" /> +<hkern u1="Ð" u2="Ä" k="41" /> +<hkern u1="Ð" u2="Ã" k="41" /> +<hkern u1="Ð" u2="Â" k="41" /> +<hkern u1="Ð" u2="Á" k="41" /> +<hkern u1="Ð" u2="À" k="41" /> +<hkern u1="Ð" u2="Z" k="20" /> +<hkern u1="Ð" u2="Y" k="20" /> +<hkern u1="Ð" u2="X" k="41" /> +<hkern u1="Ð" u2="W" k="20" /> +<hkern u1="Ð" u2="V" k="20" /> +<hkern u1="Ð" u2="T" k="61" /> +<hkern u1="Ð" u2="A" k="41" /> +<hkern u1="Ð" u2="." k="82" /> +<hkern u1="Ð" u2="," k="82" /> +<hkern u1="Ò" u2="„" k="82" /> +<hkern u1="Ò" u2="‚" k="82" /> +<hkern u1="Ò" u2="Ÿ" k="20" /> +<hkern u1="Ò" u2="Ý" k="20" /> +<hkern u1="Ò" u2="Å" k="41" /> +<hkern u1="Ò" u2="Ä" k="41" /> +<hkern u1="Ò" u2="Ã" k="41" /> +<hkern u1="Ò" u2="Â" k="41" /> +<hkern u1="Ò" u2="Á" k="41" /> +<hkern u1="Ò" u2="À" k="41" /> +<hkern u1="Ò" u2="Z" k="20" /> +<hkern u1="Ò" u2="Y" k="20" /> +<hkern u1="Ò" u2="X" k="41" /> +<hkern u1="Ò" u2="W" k="20" /> +<hkern u1="Ò" u2="V" k="20" /> +<hkern u1="Ò" u2="T" k="61" /> +<hkern u1="Ò" u2="A" k="41" /> +<hkern u1="Ò" u2="." k="82" /> +<hkern u1="Ò" u2="," k="82" /> +<hkern u1="Ó" u2="„" k="82" /> +<hkern u1="Ó" u2="‚" k="82" /> +<hkern u1="Ó" u2="Ÿ" k="20" /> +<hkern u1="Ó" u2="Ý" k="20" /> +<hkern u1="Ó" u2="Å" k="41" /> +<hkern u1="Ó" u2="Ä" k="41" /> +<hkern u1="Ó" u2="Ã" k="41" /> +<hkern u1="Ó" u2="Â" k="41" /> +<hkern u1="Ó" u2="Á" k="41" /> +<hkern u1="Ó" u2="À" k="41" /> +<hkern u1="Ó" u2="Z" k="20" /> +<hkern u1="Ó" u2="Y" k="20" /> +<hkern u1="Ó" u2="X" k="41" /> +<hkern u1="Ó" u2="W" k="20" /> +<hkern u1="Ó" u2="V" k="20" /> +<hkern u1="Ó" u2="T" k="61" /> +<hkern u1="Ó" u2="A" k="41" /> +<hkern u1="Ó" u2="." k="82" /> +<hkern u1="Ó" u2="," k="82" /> +<hkern u1="Ô" u2="„" k="82" /> +<hkern u1="Ô" u2="‚" k="82" /> +<hkern u1="Ô" u2="Ÿ" k="20" /> +<hkern u1="Ô" u2="Ý" k="20" /> +<hkern u1="Ô" u2="Å" k="41" /> +<hkern u1="Ô" u2="Ä" k="41" /> +<hkern u1="Ô" u2="Ã" k="41" /> +<hkern u1="Ô" u2="Â" k="41" /> +<hkern u1="Ô" u2="Á" k="41" /> +<hkern u1="Ô" u2="À" k="41" /> +<hkern u1="Ô" u2="Z" k="20" /> +<hkern u1="Ô" u2="Y" k="20" /> +<hkern u1="Ô" u2="X" k="41" /> +<hkern u1="Ô" u2="W" k="20" /> +<hkern u1="Ô" u2="V" k="20" /> +<hkern u1="Ô" u2="T" k="61" /> +<hkern u1="Ô" u2="A" k="41" /> +<hkern u1="Ô" u2="." k="82" /> +<hkern u1="Ô" u2="," k="82" /> +<hkern u1="Õ" u2="„" k="82" /> +<hkern u1="Õ" u2="‚" k="82" /> +<hkern u1="Õ" u2="Ÿ" k="20" /> +<hkern u1="Õ" u2="Ý" k="20" /> +<hkern u1="Õ" u2="Å" k="41" /> +<hkern u1="Õ" u2="Ä" k="41" /> +<hkern u1="Õ" u2="Ã" k="41" /> +<hkern u1="Õ" u2="Â" k="41" /> +<hkern u1="Õ" u2="Á" k="41" /> +<hkern u1="Õ" u2="À" k="41" /> +<hkern u1="Õ" u2="Z" k="20" /> +<hkern u1="Õ" u2="Y" k="20" /> +<hkern u1="Õ" u2="X" k="41" /> +<hkern u1="Õ" u2="W" k="20" /> +<hkern u1="Õ" u2="V" k="20" /> +<hkern u1="Õ" u2="T" k="61" /> +<hkern u1="Õ" u2="A" k="41" /> +<hkern u1="Õ" u2="." k="82" /> +<hkern u1="Õ" u2="," k="82" /> +<hkern u1="Ö" u2="„" k="82" /> +<hkern u1="Ö" u2="‚" k="82" /> +<hkern u1="Ö" u2="Ÿ" k="20" /> +<hkern u1="Ö" u2="Ý" k="20" /> +<hkern u1="Ö" u2="Å" k="41" /> +<hkern u1="Ö" u2="Ä" k="41" /> +<hkern u1="Ö" u2="Ã" k="41" /> +<hkern u1="Ö" u2="Â" k="41" /> +<hkern u1="Ö" u2="Á" k="41" /> +<hkern u1="Ö" u2="À" k="41" /> +<hkern u1="Ö" u2="Z" k="20" /> +<hkern u1="Ö" u2="Y" k="20" /> +<hkern u1="Ö" u2="X" k="41" /> +<hkern u1="Ö" u2="W" k="20" /> +<hkern u1="Ö" u2="V" k="20" /> +<hkern u1="Ö" u2="T" k="61" /> +<hkern u1="Ö" u2="A" k="41" /> +<hkern u1="Ö" u2="." k="82" /> +<hkern u1="Ö" u2="," k="82" /> +<hkern u1="Ø" u2="„" k="82" /> +<hkern u1="Ø" u2="‚" k="82" /> +<hkern u1="Ø" u2="Ÿ" k="20" /> +<hkern u1="Ø" u2="Ý" k="20" /> +<hkern u1="Ø" u2="Å" k="41" /> +<hkern u1="Ø" u2="Ä" k="41" /> +<hkern u1="Ø" u2="Ã" k="41" /> +<hkern u1="Ø" u2="Â" k="41" /> +<hkern u1="Ø" u2="Á" k="41" /> +<hkern u1="Ø" u2="À" k="41" /> +<hkern u1="Ø" u2="Z" k="20" /> +<hkern u1="Ø" u2="Y" k="20" /> +<hkern u1="Ø" u2="X" k="41" /> +<hkern u1="Ø" u2="W" k="20" /> +<hkern u1="Ø" u2="V" k="20" /> +<hkern u1="Ø" u2="T" k="61" /> +<hkern u1="Ø" u2="A" k="41" /> +<hkern u1="Ø" u2="." k="82" /> +<hkern u1="Ø" u2="," k="82" /> +<hkern u1="Ù" u2="„" k="41" /> +<hkern u1="Ù" u2="‚" k="41" /> +<hkern u1="Ù" u2="Å" k="20" /> +<hkern u1="Ù" u2="Ä" k="20" /> +<hkern u1="Ù" u2="Ã" k="20" /> +<hkern u1="Ù" u2="Â" k="20" /> +<hkern u1="Ù" u2="Á" k="20" /> +<hkern u1="Ù" u2="À" k="20" /> +<hkern u1="Ù" u2="A" k="20" /> +<hkern u1="Ù" u2="." k="41" /> +<hkern u1="Ù" u2="," k="41" /> +<hkern u1="Ú" u2="„" k="41" /> +<hkern u1="Ú" u2="‚" k="41" /> +<hkern u1="Ú" u2="Å" k="20" /> +<hkern u1="Ú" u2="Ä" k="20" /> +<hkern u1="Ú" u2="Ã" k="20" /> +<hkern u1="Ú" u2="Â" k="20" /> +<hkern u1="Ú" u2="Á" k="20" /> +<hkern u1="Ú" u2="À" k="20" /> +<hkern u1="Ú" u2="A" k="20" /> +<hkern u1="Ú" u2="." k="41" /> +<hkern u1="Ú" u2="," k="41" /> +<hkern u1="Û" u2="„" k="41" /> +<hkern u1="Û" u2="‚" k="41" /> +<hkern u1="Û" u2="Å" k="20" /> +<hkern u1="Û" u2="Ä" k="20" /> +<hkern u1="Û" u2="Ã" k="20" /> +<hkern u1="Û" u2="Â" k="20" /> +<hkern u1="Û" u2="Á" k="20" /> +<hkern u1="Û" u2="À" k="20" /> +<hkern u1="Û" u2="A" k="20" /> +<hkern u1="Û" u2="." k="41" /> +<hkern u1="Û" u2="," k="41" /> +<hkern u1="Ü" u2="„" k="41" /> +<hkern u1="Ü" u2="‚" k="41" /> +<hkern u1="Ü" u2="Å" k="20" /> +<hkern u1="Ü" u2="Ä" k="20" /> +<hkern u1="Ü" u2="Ã" k="20" /> +<hkern u1="Ü" u2="Â" k="20" /> +<hkern u1="Ü" u2="Á" k="20" /> +<hkern u1="Ü" u2="À" k="20" /> +<hkern u1="Ü" u2="A" k="20" /> +<hkern u1="Ü" u2="." k="41" /> +<hkern u1="Ü" u2="," k="41" /> +<hkern u1="Ý" u2="„" k="123" /> +<hkern u1="Ý" u2="‚" k="123" /> +<hkern u1="Ý" u2="œ" k="102" /> +<hkern u1="Ý" u2="Œ" k="41" /> +<hkern u1="Ý" u2="ü" k="61" /> +<hkern u1="Ý" u2="û" k="61" /> +<hkern u1="Ý" u2="ú" k="61" /> +<hkern u1="Ý" u2="ù" k="61" /> +<hkern u1="Ý" u2="ø" k="102" /> +<hkern u1="Ý" u2="ö" k="102" /> +<hkern u1="Ý" u2="õ" k="102" /> +<hkern u1="Ý" u2="ô" k="102" /> +<hkern u1="Ý" u2="ó" k="102" /> +<hkern u1="Ý" u2="ò" k="102" /> +<hkern u1="Ý" u2="ë" k="102" /> +<hkern u1="Ý" u2="ê" k="102" /> +<hkern u1="Ý" u2="é" k="102" /> +<hkern u1="Ý" u2="è" k="102" /> +<hkern u1="Ý" u2="ç" k="102" /> +<hkern u1="Ý" u2="æ" k="102" /> +<hkern u1="Ý" u2="å" k="102" /> +<hkern u1="Ý" u2="ä" k="102" /> +<hkern u1="Ý" u2="ã" k="102" /> +<hkern u1="Ý" u2="â" k="102" /> +<hkern u1="Ý" u2="á" k="102" /> +<hkern u1="Ý" u2="à" k="102" /> +<hkern u1="Ý" u2="Ø" k="41" /> +<hkern u1="Ý" u2="Ö" k="41" /> +<hkern u1="Ý" u2="Õ" k="41" /> +<hkern u1="Ý" u2="Ô" k="41" /> +<hkern u1="Ý" u2="Ó" k="41" /> +<hkern u1="Ý" u2="Ò" k="41" /> +<hkern u1="Ý" u2="Ç" k="41" /> +<hkern u1="Ý" u2="Å" k="123" /> +<hkern u1="Ý" u2="Ä" k="123" /> +<hkern u1="Ý" u2="Ã" k="123" /> +<hkern u1="Ý" u2="Â" k="123" /> +<hkern u1="Ý" u2="Á" k="123" /> +<hkern u1="Ý" u2="À" k="123" /> +<hkern u1="Ý" u2="z" k="41" /> +<hkern u1="Ý" u2="u" k="61" /> +<hkern u1="Ý" u2="s" k="82" /> +<hkern u1="Ý" u2="r" k="61" /> +<hkern u1="Ý" u2="q" k="102" /> +<hkern u1="Ý" u2="p" k="61" /> +<hkern u1="Ý" u2="o" k="102" /> +<hkern u1="Ý" u2="n" k="61" /> +<hkern u1="Ý" u2="m" k="61" /> +<hkern u1="Ý" u2="g" k="41" /> +<hkern u1="Ý" u2="e" k="102" /> +<hkern u1="Ý" u2="d" k="102" /> +<hkern u1="Ý" u2="c" k="102" /> +<hkern u1="Ý" u2="a" k="102" /> +<hkern u1="Ý" u2="Q" k="41" /> +<hkern u1="Ý" u2="O" k="41" /> +<hkern u1="Ý" u2="G" k="41" /> +<hkern u1="Ý" u2="C" k="41" /> +<hkern u1="Ý" u2="A" k="123" /> +<hkern u1="Ý" u2="?" k="-41" /> +<hkern u1="Ý" u2="." k="123" /> +<hkern u1="Ý" u2="," k="123" /> +<hkern u1="Þ" u2="„" k="266" /> +<hkern u1="Þ" u2="‚" k="266" /> +<hkern u1="Þ" u2="Å" k="102" /> +<hkern u1="Þ" u2="Ä" k="102" /> +<hkern u1="Þ" u2="Ã" k="102" /> +<hkern u1="Þ" u2="Â" k="102" /> +<hkern u1="Þ" u2="Á" k="102" /> +<hkern u1="Þ" u2="À" k="102" /> +<hkern u1="Þ" u2="Z" k="20" /> +<hkern u1="Þ" u2="X" k="41" /> +<hkern u1="Þ" u2="A" k="102" /> +<hkern u1="Þ" u2="." k="266" /> +<hkern u1="Þ" u2="," k="266" /> +<hkern u1="à" u2="”" k="20" /> +<hkern u1="à" u2="’" k="20" /> +<hkern u1="à" u2="'" k="20" /> +<hkern u1="à" u2=""" k="20" /> +<hkern u1="á" u2="”" k="20" /> +<hkern u1="á" u2="’" k="20" /> +<hkern u1="á" u2="'" k="20" /> +<hkern u1="á" u2=""" k="20" /> +<hkern u1="â" u2="”" k="20" /> +<hkern u1="â" u2="’" k="20" /> +<hkern u1="â" u2="'" k="20" /> +<hkern u1="â" u2=""" k="20" /> +<hkern u1="ã" u2="”" k="20" /> +<hkern u1="ã" u2="’" k="20" /> +<hkern u1="ã" u2="'" k="20" /> +<hkern u1="ã" u2=""" k="20" /> +<hkern u1="ä" u2="”" k="20" /> +<hkern u1="ä" u2="’" k="20" /> +<hkern u1="ä" u2="'" k="20" /> +<hkern u1="ä" u2=""" k="20" /> +<hkern u1="å" u2="”" k="20" /> +<hkern u1="å" u2="’" k="20" /> +<hkern u1="å" u2="'" k="20" /> +<hkern u1="å" u2=""" k="20" /> +<hkern u1="è" u2="”" k="20" /> +<hkern u1="è" u2="’" k="20" /> +<hkern u1="è" u2="ý" k="41" /> +<hkern u1="è" u2="z" k="20" /> +<hkern u1="è" u2="y" k="41" /> +<hkern u1="è" u2="x" k="41" /> +<hkern u1="è" u2="w" k="41" /> +<hkern u1="è" u2="v" k="41" /> +<hkern u1="è" u2="'" k="20" /> +<hkern u1="è" u2=""" k="20" /> +<hkern u1="é" u2="”" k="20" /> +<hkern u1="é" u2="’" k="20" /> +<hkern u1="é" u2="ý" k="41" /> +<hkern u1="é" u2="z" k="20" /> +<hkern u1="é" u2="y" k="41" /> +<hkern u1="é" u2="x" k="41" /> +<hkern u1="é" u2="w" k="41" /> +<hkern u1="é" u2="v" k="41" /> +<hkern u1="é" u2="'" k="20" /> +<hkern u1="é" u2=""" k="20" /> +<hkern u1="ê" u2="”" k="20" /> +<hkern u1="ê" u2="’" k="20" /> +<hkern u1="ê" u2="ý" k="41" /> +<hkern u1="ê" u2="z" k="20" /> +<hkern u1="ê" u2="y" k="41" /> +<hkern u1="ê" u2="x" k="41" /> +<hkern u1="ê" u2="w" k="41" /> +<hkern u1="ê" u2="v" k="41" /> +<hkern u1="ê" u2="'" k="20" /> +<hkern u1="ê" u2=""" k="20" /> +<hkern u1="ë" u2="”" k="20" /> +<hkern u1="ë" u2="’" k="20" /> +<hkern u1="ë" u2="ý" k="41" /> +<hkern u1="ë" u2="z" k="20" /> +<hkern u1="ë" u2="y" k="41" /> +<hkern u1="ë" u2="x" k="41" /> +<hkern u1="ë" u2="w" k="41" /> +<hkern u1="ë" u2="v" k="41" /> +<hkern u1="ë" u2="'" k="20" /> +<hkern u1="ë" u2=""" k="20" /> +<hkern u1="ð" u2="”" k="20" /> +<hkern u1="ð" u2="’" k="20" /> +<hkern u1="ð" u2="ý" k="41" /> +<hkern u1="ð" u2="z" k="20" /> +<hkern u1="ð" u2="y" k="41" /> +<hkern u1="ð" u2="x" k="41" /> +<hkern u1="ð" u2="w" k="41" /> +<hkern u1="ð" u2="v" k="41" /> +<hkern u1="ð" u2="'" k="20" /> +<hkern u1="ð" u2=""" k="20" /> +<hkern u1="ò" u2="”" k="20" /> +<hkern u1="ò" u2="’" k="20" /> +<hkern u1="ò" u2="ý" k="41" /> +<hkern u1="ò" u2="z" k="20" /> +<hkern u1="ò" u2="y" k="41" /> +<hkern u1="ò" u2="x" k="41" /> +<hkern u1="ò" u2="w" k="41" /> +<hkern u1="ò" u2="v" k="41" /> +<hkern u1="ò" u2="'" k="20" /> +<hkern u1="ò" u2=""" k="20" /> +<hkern u1="ó" u2="”" k="20" /> +<hkern u1="ó" u2="’" k="20" /> +<hkern u1="ó" u2="ý" k="41" /> +<hkern u1="ó" u2="z" k="20" /> +<hkern u1="ó" u2="y" k="41" /> +<hkern u1="ó" u2="x" k="41" /> +<hkern u1="ó" u2="w" k="41" /> +<hkern u1="ó" u2="v" k="41" /> +<hkern u1="ó" u2="'" k="20" /> +<hkern u1="ó" u2=""" k="20" /> +<hkern u1="ô" u2="”" k="20" /> +<hkern u1="ô" u2="’" k="20" /> +<hkern u1="ô" u2="ý" k="41" /> +<hkern u1="ô" u2="z" k="20" /> +<hkern u1="ô" u2="y" k="41" /> +<hkern u1="ô" u2="x" k="41" /> +<hkern u1="ô" u2="w" k="41" /> +<hkern u1="ô" u2="v" k="41" /> +<hkern u1="ô" u2="'" k="20" /> +<hkern u1="ô" u2=""" k="20" /> +<hkern u1="ö" u2="”" k="41" /> +<hkern u1="ö" u2="’" k="41" /> +<hkern u1="ö" u2="'" k="41" /> +<hkern u1="ö" u2=""" k="41" /> +<hkern u1="ø" u2="”" k="20" /> +<hkern u1="ø" u2="’" k="20" /> +<hkern u1="ø" u2="ý" k="41" /> +<hkern u1="ø" u2="z" k="20" /> +<hkern u1="ø" u2="y" k="41" /> +<hkern u1="ø" u2="x" k="41" /> +<hkern u1="ø" u2="w" k="41" /> +<hkern u1="ø" u2="v" k="41" /> +<hkern u1="ø" u2="'" k="20" /> +<hkern u1="ø" u2=""" k="20" /> +<hkern u1="ý" u2="„" k="82" /> +<hkern u1="ý" u2="”" k="-82" /> +<hkern u1="ý" u2="‚" k="82" /> +<hkern u1="ý" u2="’" k="-82" /> +<hkern u1="ý" u2="?" k="-41" /> +<hkern u1="ý" u2="." k="82" /> +<hkern u1="ý" u2="," k="82" /> +<hkern u1="ý" u2="'" k="-82" /> +<hkern u1="ý" u2=""" k="-82" /> +<hkern u1="þ" u2="”" k="20" /> +<hkern u1="þ" u2="’" k="20" /> +<hkern u1="þ" u2="ý" k="41" /> +<hkern u1="þ" u2="z" k="20" /> +<hkern u1="þ" u2="y" k="41" /> +<hkern u1="þ" u2="x" k="41" /> +<hkern u1="þ" u2="w" k="41" /> +<hkern u1="þ" u2="v" k="41" /> +<hkern u1="þ" u2="'" k="20" /> +<hkern u1="þ" u2=""" k="20" /> +<hkern u1="ÿ" u2="„" k="82" /> +<hkern u1="ÿ" u2="”" k="-82" /> +<hkern u1="ÿ" u2="‚" k="82" /> +<hkern u1="ÿ" u2="’" k="-82" /> +<hkern u1="ÿ" u2="?" k="-41" /> +<hkern u1="ÿ" u2="." k="82" /> +<hkern u1="ÿ" u2="," k="82" /> +<hkern u1="ÿ" u2="'" k="-82" /> +<hkern u1="ÿ" u2=""" k="-82" /> +<hkern u1="Œ" u2="J" k="-123" /> +<hkern u1="Ÿ" u2="„" k="123" /> +<hkern u1="Ÿ" u2="‚" k="123" /> +<hkern u1="Ÿ" u2="œ" k="102" /> +<hkern u1="Ÿ" u2="Œ" k="41" /> +<hkern u1="Ÿ" u2="ü" k="61" /> +<hkern u1="Ÿ" u2="û" k="61" /> +<hkern u1="Ÿ" u2="ú" k="61" /> +<hkern u1="Ÿ" u2="ù" k="61" /> +<hkern u1="Ÿ" u2="ø" k="102" /> +<hkern u1="Ÿ" u2="ö" k="102" /> +<hkern u1="Ÿ" u2="õ" k="102" /> +<hkern u1="Ÿ" u2="ô" k="102" /> +<hkern u1="Ÿ" u2="ó" k="102" /> +<hkern u1="Ÿ" u2="ò" k="102" /> +<hkern u1="Ÿ" u2="ë" k="102" /> +<hkern u1="Ÿ" u2="ê" k="102" /> +<hkern u1="Ÿ" u2="é" k="102" /> +<hkern u1="Ÿ" u2="è" k="102" /> +<hkern u1="Ÿ" u2="ç" k="102" /> +<hkern u1="Ÿ" u2="æ" k="102" /> +<hkern u1="Ÿ" u2="å" k="102" /> +<hkern u1="Ÿ" u2="ä" k="102" /> +<hkern u1="Ÿ" u2="ã" k="102" /> +<hkern u1="Ÿ" u2="â" k="102" /> +<hkern u1="Ÿ" u2="á" k="102" /> +<hkern u1="Ÿ" u2="à" k="102" /> +<hkern u1="Ÿ" u2="Ø" k="41" /> +<hkern u1="Ÿ" u2="Ö" k="41" /> +<hkern u1="Ÿ" u2="Õ" k="41" /> +<hkern u1="Ÿ" u2="Ô" k="41" /> +<hkern u1="Ÿ" u2="Ó" k="41" /> +<hkern u1="Ÿ" u2="Ò" k="41" /> +<hkern u1="Ÿ" u2="Ç" k="41" /> +<hkern u1="Ÿ" u2="Å" k="123" /> +<hkern u1="Ÿ" u2="Ä" k="123" /> +<hkern u1="Ÿ" u2="Ã" k="123" /> +<hkern u1="Ÿ" u2="Â" k="123" /> +<hkern u1="Ÿ" u2="Á" k="123" /> +<hkern u1="Ÿ" u2="À" k="123" /> +<hkern u1="Ÿ" u2="z" k="41" /> +<hkern u1="Ÿ" u2="u" k="61" /> +<hkern u1="Ÿ" u2="s" k="82" /> +<hkern u1="Ÿ" u2="r" k="61" /> +<hkern u1="Ÿ" u2="q" k="102" /> +<hkern u1="Ÿ" u2="p" k="61" /> +<hkern u1="Ÿ" u2="o" k="102" /> +<hkern u1="Ÿ" u2="n" k="61" /> +<hkern u1="Ÿ" u2="m" k="61" /> +<hkern u1="Ÿ" u2="g" k="41" /> +<hkern u1="Ÿ" u2="e" k="102" /> +<hkern u1="Ÿ" u2="d" k="102" /> +<hkern u1="Ÿ" u2="c" k="102" /> +<hkern u1="Ÿ" u2="a" k="102" /> +<hkern u1="Ÿ" u2="Q" k="41" /> +<hkern u1="Ÿ" u2="O" k="41" /> +<hkern u1="Ÿ" u2="G" k="41" /> +<hkern u1="Ÿ" u2="C" k="41" /> +<hkern u1="Ÿ" u2="A" k="123" /> +<hkern u1="Ÿ" u2="?" k="-41" /> +<hkern u1="Ÿ" u2="." k="123" /> +<hkern u1="Ÿ" u2="," k="123" /> +<hkern u1="–" u2="T" k="82" /> +<hkern u1="—" u2="T" k="82" /> +<hkern u1="‘" u2="Ÿ" k="-20" /> +<hkern u1="‘" u2="œ" k="123" /> +<hkern u1="‘" u2="ü" k="61" /> +<hkern u1="‘" u2="û" k="61" /> +<hkern u1="‘" u2="ú" k="61" /> +<hkern u1="‘" u2="ù" k="61" /> +<hkern u1="‘" u2="ø" k="123" /> +<hkern u1="‘" u2="ö" k="123" /> +<hkern u1="‘" u2="õ" k="123" /> +<hkern u1="‘" u2="ô" k="123" /> +<hkern u1="‘" u2="ó" k="123" /> +<hkern u1="‘" u2="ò" k="123" /> +<hkern u1="‘" u2="ë" k="123" /> +<hkern u1="‘" u2="ê" k="123" /> +<hkern u1="‘" u2="é" k="123" /> +<hkern u1="‘" u2="è" k="123" /> +<hkern u1="‘" u2="ç" k="123" /> +<hkern u1="‘" u2="æ" k="82" /> +<hkern u1="‘" u2="å" k="82" /> +<hkern u1="‘" u2="ä" k="82" /> +<hkern u1="‘" u2="ã" k="82" /> +<hkern u1="‘" u2="â" k="82" /> +<hkern u1="‘" u2="á" k="82" /> +<hkern u1="‘" u2="à" k="123" /> +<hkern u1="‘" u2="Ý" k="-20" /> +<hkern u1="‘" u2="Å" k="143" /> +<hkern u1="‘" u2="Ä" k="143" /> +<hkern u1="‘" u2="Ã" k="143" /> +<hkern u1="‘" u2="Â" k="143" /> +<hkern u1="‘" u2="Á" k="143" /> +<hkern u1="‘" u2="À" k="143" /> +<hkern u1="‘" u2="u" k="61" /> +<hkern u1="‘" u2="s" k="61" /> +<hkern u1="‘" u2="r" k="61" /> +<hkern u1="‘" u2="q" k="123" /> +<hkern u1="‘" u2="p" k="61" /> +<hkern u1="‘" u2="o" k="123" /> +<hkern u1="‘" u2="n" k="61" /> +<hkern u1="‘" u2="m" k="61" /> +<hkern u1="‘" u2="g" k="61" /> +<hkern u1="‘" u2="e" k="123" /> +<hkern u1="‘" u2="d" k="123" /> +<hkern u1="‘" u2="c" k="123" /> +<hkern u1="‘" u2="a" k="82" /> +<hkern u1="‘" u2="Y" k="-20" /> +<hkern u1="‘" u2="W" k="-41" /> +<hkern u1="‘" u2="V" k="-41" /> +<hkern u1="‘" u2="T" k="-41" /> +<hkern u1="‘" u2="A" k="143" /> +<hkern u1="’" u2="Ÿ" k="-20" /> +<hkern u1="’" u2="œ" k="123" /> +<hkern u1="’" u2="ü" k="61" /> +<hkern u1="’" u2="û" k="61" /> +<hkern u1="’" u2="ú" k="61" /> +<hkern u1="’" u2="ù" k="61" /> +<hkern u1="’" u2="ø" k="123" /> +<hkern u1="’" u2="ö" k="123" /> +<hkern u1="’" u2="õ" k="123" /> +<hkern u1="’" u2="ô" k="123" /> +<hkern u1="’" u2="ó" k="123" /> +<hkern u1="’" u2="ò" k="123" /> +<hkern u1="’" u2="ë" k="123" /> +<hkern u1="’" u2="ê" k="123" /> +<hkern u1="’" u2="é" k="123" /> +<hkern u1="’" u2="è" k="123" /> +<hkern u1="’" u2="ç" k="123" /> +<hkern u1="’" u2="æ" k="82" /> +<hkern u1="’" u2="å" k="82" /> +<hkern u1="’" u2="ä" k="82" /> +<hkern u1="’" u2="ã" k="82" /> +<hkern u1="’" u2="â" k="82" /> +<hkern u1="’" u2="á" k="82" /> +<hkern u1="’" u2="à" k="123" /> +<hkern u1="’" u2="Ý" k="-20" /> +<hkern u1="’" u2="Å" k="143" /> +<hkern u1="’" u2="Ä" k="143" /> +<hkern u1="’" u2="Ã" k="143" /> +<hkern u1="’" u2="Â" k="143" /> +<hkern u1="’" u2="Á" k="143" /> +<hkern u1="’" u2="À" k="143" /> +<hkern u1="’" u2="u" k="61" /> +<hkern u1="’" u2="s" k="61" /> +<hkern u1="’" u2="r" k="61" /> +<hkern u1="’" u2="q" k="123" /> +<hkern u1="’" u2="p" k="61" /> +<hkern u1="’" u2="o" k="123" /> +<hkern u1="’" u2="n" k="61" /> +<hkern u1="’" u2="m" k="61" /> +<hkern u1="’" u2="g" k="61" /> +<hkern u1="’" u2="e" k="123" /> +<hkern u1="’" u2="d" k="123" /> +<hkern u1="’" u2="c" k="123" /> +<hkern u1="’" u2="a" k="82" /> +<hkern u1="’" u2="Y" k="-20" /> +<hkern u1="’" u2="W" k="-41" /> +<hkern u1="’" u2="V" k="-41" /> +<hkern u1="’" u2="T" k="-41" /> +<hkern u1="’" u2="A" k="143" /> +<hkern u1="‚" u2="Ÿ" k="123" /> +<hkern u1="‚" u2="Œ" k="102" /> +<hkern u1="‚" u2="Ý" k="123" /> +<hkern u1="‚" u2="Ü" k="41" /> +<hkern u1="‚" u2="Û" k="41" /> +<hkern u1="‚" u2="Ú" k="41" /> +<hkern u1="‚" u2="Ù" k="41" /> +<hkern u1="‚" u2="Ø" k="102" /> +<hkern u1="‚" u2="Ö" k="102" /> +<hkern u1="‚" u2="Õ" k="102" /> +<hkern u1="‚" u2="Ô" k="102" /> +<hkern u1="‚" u2="Ó" k="102" /> +<hkern u1="‚" u2="Ò" k="102" /> +<hkern u1="‚" u2="Ç" k="102" /> +<hkern u1="‚" u2="Y" k="123" /> +<hkern u1="‚" u2="W" k="123" /> +<hkern u1="‚" u2="V" k="123" /> +<hkern u1="‚" u2="U" k="41" /> +<hkern u1="‚" u2="T" k="143" /> +<hkern u1="‚" u2="Q" k="102" /> +<hkern u1="‚" u2="O" k="102" /> +<hkern u1="‚" u2="G" k="102" /> +<hkern u1="‚" u2="C" k="102" /> +<hkern u1="“" u2="Ÿ" k="-20" /> +<hkern u1="“" u2="œ" k="123" /> +<hkern u1="“" u2="ü" k="61" /> +<hkern u1="“" u2="û" k="61" /> +<hkern u1="“" u2="ú" k="61" /> +<hkern u1="“" u2="ù" k="61" /> +<hkern u1="“" u2="ø" k="123" /> +<hkern u1="“" u2="ö" k="123" /> +<hkern u1="“" u2="õ" k="123" /> +<hkern u1="“" u2="ô" k="123" /> +<hkern u1="“" u2="ó" k="123" /> +<hkern u1="“" u2="ò" k="123" /> +<hkern u1="“" u2="ë" k="123" /> +<hkern u1="“" u2="ê" k="123" /> +<hkern u1="“" u2="é" k="123" /> +<hkern u1="“" u2="è" k="123" /> +<hkern u1="“" u2="ç" k="123" /> +<hkern u1="“" u2="æ" k="82" /> +<hkern u1="“" u2="å" k="82" /> +<hkern u1="“" u2="ä" k="82" /> +<hkern u1="“" u2="ã" k="82" /> +<hkern u1="“" u2="â" k="82" /> +<hkern u1="“" u2="á" k="82" /> +<hkern u1="“" u2="à" k="123" /> +<hkern u1="“" u2="Ý" k="-20" /> +<hkern u1="“" u2="Å" k="143" /> +<hkern u1="“" u2="Ä" k="143" /> +<hkern u1="“" u2="Ã" k="143" /> +<hkern u1="“" u2="Â" k="143" /> +<hkern u1="“" u2="Á" k="143" /> +<hkern u1="“" u2="À" k="143" /> +<hkern u1="“" u2="u" k="61" /> +<hkern u1="“" u2="s" k="61" /> +<hkern u1="“" u2="r" k="61" /> +<hkern u1="“" u2="q" k="123" /> +<hkern u1="“" u2="p" k="61" /> +<hkern u1="“" u2="o" k="123" /> +<hkern u1="“" u2="n" k="61" /> +<hkern u1="“" u2="m" k="61" /> +<hkern u1="“" u2="g" k="61" /> +<hkern u1="“" u2="e" k="123" /> +<hkern u1="“" u2="d" k="123" /> +<hkern u1="“" u2="c" k="123" /> +<hkern u1="“" u2="a" k="82" /> +<hkern u1="“" u2="Y" k="-20" /> +<hkern u1="“" u2="W" k="-41" /> +<hkern u1="“" u2="V" k="-41" /> +<hkern u1="“" u2="T" k="-41" /> +<hkern u1="“" u2="A" k="143" /> +<hkern u1="„" u2="Ÿ" k="123" /> +<hkern u1="„" u2="Œ" k="102" /> +<hkern u1="„" u2="Ý" k="123" /> +<hkern u1="„" u2="Ü" k="41" /> +<hkern u1="„" u2="Û" k="41" /> +<hkern u1="„" u2="Ú" k="41" /> +<hkern u1="„" u2="Ù" k="41" /> +<hkern u1="„" u2="Ø" k="102" /> +<hkern u1="„" u2="Ö" k="102" /> +<hkern u1="„" u2="Õ" k="102" /> +<hkern u1="„" u2="Ô" k="102" /> +<hkern u1="„" u2="Ó" k="102" /> +<hkern u1="„" u2="Ò" k="102" /> +<hkern u1="„" u2="Ç" k="102" /> +<hkern u1="„" u2="Y" k="123" /> +<hkern u1="„" u2="W" k="123" /> +<hkern u1="„" u2="V" k="123" /> +<hkern u1="„" u2="U" k="41" /> +<hkern u1="„" u2="T" k="143" /> +<hkern u1="„" u2="Q" k="102" /> +<hkern u1="„" u2="O" k="102" /> +<hkern u1="„" u2="G" k="102" /> +<hkern u1="„" u2="C" k="102" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.woff b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000..ff652e6 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Italic-webfont.woff Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.eot b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.eot new file mode 100644 index 0000000..1486840 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.eot Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.svg b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 0000000..11a472c --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="open_sanslight" horiz-adv-x="1169" > +<font-face units-per-em="2048" ascent="1638" descent="-410" /> +<missing-glyph horiz-adv-x="532" /> +<glyph unicode="fi" horiz-adv-x="1077" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM895 0h-99v1087h99v-1087zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71 t-48.5 -26q-63 0 -63 97z" /> +<glyph unicode="fl" horiz-adv-x="1077" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM895 0h-99v1556h99v-1556z" /> +<glyph unicode="ffi" horiz-adv-x="1692" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1200 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5 q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1510 0h-99v1087h99v-1087zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" /> +<glyph unicode="ffl" horiz-adv-x="1692" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1200 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5 q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1510 0h-99v1556h99v-1556z" /> +<glyph horiz-adv-x="2048" /> +<glyph horiz-adv-x="2048" /> +<glyph unicode="
" horiz-adv-x="1044" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="	" horiz-adv-x="532" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="!" horiz-adv-x="492" d="M276 377h-61l-29 1085h119zM164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" /> +<glyph unicode=""" horiz-adv-x="723" d="M260 1462l-33 -528h-61l-33 528h127zM590 1462l-33 -528h-61l-33 528h127z" /> +<glyph unicode="#" horiz-adv-x="1323" d="M967 928l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301zM440 530h363l78 398h-363z" /> +<glyph unicode="$" d="M991 440q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5t-172.5 50.5v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144 t80 -204zM881 444q0 85 -63 140.5t-200 95.5v-471q122 13 192.5 75t70.5 160zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143z" /> +<glyph unicode="%" horiz-adv-x="1653" d="M211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM688 1026q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5zM1063 438 q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5zM1540 438q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337zM1280 1462l-811 -1462h-96l811 1462h96z" /> +<glyph unicode="&" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM578 70q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138q0 -143 93 -224t258 -81zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" /> +<glyph unicode="'" horiz-adv-x="393" d="M260 1462l-33 -528h-61l-33 528h127z" /> +<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" /> +<glyph unicode=")" horiz-adv-x="557" d="M475 561q0 -263 -77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5h113q147 -175 224 -406.5t77 -494.5z" /> +<glyph unicode="*" horiz-adv-x="1128" d="M631 1556l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340l-390 39l19 131l401 -104l-39 405h146z" /> +<glyph unicode="+" d="M625 764h434v-82h-434v-432h-82v432h-432v82h432v434h82v-434z" /> +<glyph unicode="," horiz-adv-x="440" d="M295 238l12 -21q-75 -265 -174 -481h-65q77 275 110 502h117z" /> +<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" /> +<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" /> +<glyph unicode="/" horiz-adv-x="698" d="M674 1462l-545 -1462h-104l544 1462h105z" /> +<glyph unicode="0" d="M1055 735q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" /> +<glyph unicode="1" d="M682 0h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243l-57 71l397 297h86v-1462z" /> +<glyph unicode="2" d="M1028 0h-915v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96z" /> +<glyph unicode="3" d="M979 1118q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5 q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5z" /> +<glyph unicode="4" d="M1141 373h-252v-373h-94v373h-752v67l725 1030h121v-1011h252v-86zM795 459v418q0 302 14 507h-8q-20 -37 -123 -188l-516 -737h633z" /> +<glyph unicode="5" d="M537 879q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29z" /> +<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM610 68q164 0 255 103 t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5q0 -111 49.5 -213.5t134 -162.5t186.5 -60z" /> +<glyph unicode="7" d="M334 0l602 1366h-827v96h946v-73l-604 -1389h-117z" /> +<glyph unicode="8" d="M582 1487q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM580 1397q-141 0 -226.5 -69.5t-85.5 -190.5q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70z" /> +<glyph unicode="9" d="M1036 842q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346z M559 1397q-158 0 -252 -106.5t-94 -291.5q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5z" /> +<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" /> +<glyph unicode=";" horiz-adv-x="487" d="M303 238l12 -21q-75 -265 -174 -481h-65q29 97 62 245.5t48 256.5h117zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" /> +<glyph unicode="<" d="M1059 266l-948 416v61l948 474v-95l-823 -405l823 -355v-96z" /> +<glyph unicode="=" d="M111 885v82h948v-82h-948zM111 477v82h948v-82h-948z" /> +<glyph unicode=">" d="M111 362l823 355l-823 405v95l948 -474v-61l-948 -416v96z" /> +<glyph unicode="?" horiz-adv-x="862" d="M293 377v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75q-79 0 -148 -17.5t-149 -56.5l-37 80q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5 t-50 -93.5t-15.5 -146v-14h-82zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" /> +<glyph unicode="@" horiz-adv-x="1815" d="M1702 725q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5 q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5 t89.5 -383.5zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" /> +<glyph unicode="A" horiz-adv-x="1229" d="M911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" /> +<glyph unicode="B" horiz-adv-x="1284" d="M207 1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448v1462zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212t-314.5 66h-295v-561zM309 721v-631h344q406 0 406 330 q0 301 -428 301h-322z" /> +<glyph unicode="C" horiz-adv-x="1272" d="M831 1391q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80z" /> +<glyph unicode="D" horiz-adv-x="1446" d="M1317 745q0 -368 -193 -556.5t-567 -188.5h-350v1462h395q350 0 532.5 -183t182.5 -534zM1206 741q0 314 -159.5 472.5t-468.5 158.5h-269v-1282h242q655 0 655 651z" /> +<glyph unicode="E" horiz-adv-x="1130" d="M1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94z" /> +<glyph unicode="F" horiz-adv-x="1028" d="M309 0h-102v1462h801v-94h-699v-620h660v-95h-660v-653z" /> +<glyph unicode="G" horiz-adv-x="1481" d="M782 737h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96z" /> +<glyph unicode="H" horiz-adv-x="1473" d="M1266 0h-103v719h-854v-719h-102v1462h102v-649h854v649h103v-1462z" /> +<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" /> +<glyph unicode="J" horiz-adv-x="506" d="M-33 -369q-92 0 -151 27v88q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369z" /> +<glyph unicode="K" horiz-adv-x="1190" d="M1190 0h-125l-561 772l-195 -172v-600h-102v1462h102v-760l162 162l573 598h130l-599 -618z" /> +<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" /> +<glyph unicode="M" horiz-adv-x="1767" d="M850 0l-545 1350h-8q8 -124 8 -254v-1096h-98v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65z" /> +<glyph unicode="N" horiz-adv-x="1477" d="M1270 0h-103l-866 1298h-8q12 -232 12 -350v-948h-98v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462z" /> +<glyph unicode="O" horiz-adv-x="1565" d="M1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" /> +<glyph unicode="P" horiz-adv-x="1198" d="M1087 1042q0 -212 -144 -325t-408 -113h-226v-604h-102v1462h358q522 0 522 -420zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" /> +<glyph unicode="Q" horiz-adv-x="1565" d="M1436 733q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" /> +<glyph unicode="R" horiz-adv-x="1217" d="M309 637v-637h-102v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" /> +<glyph unicode="S" horiz-adv-x="1116" d="M1014 377q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76 q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5z" /> +<glyph unicode="T" horiz-adv-x="1073" d="M588 0h-103v1366h-475v96h1053v-96h-475v-1366z" /> +<glyph unicode="U" horiz-adv-x="1473" d="M1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102z" /> +<glyph unicode="V" horiz-adv-x="1182" d="M1071 1462h111l-547 -1462h-90l-545 1462h109l368 -995q84 -225 113 -338q20 75 79 233z" /> +<glyph unicode="W" horiz-adv-x="1827" d="M1372 0h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86l-402 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103z" /> +<glyph unicode="X" horiz-adv-x="1102" d="M1102 0h-117l-432 682l-440 -682h-113l492 762l-447 700h115l395 -626l401 626h109l-453 -698z" /> +<glyph unicode="Y" horiz-adv-x="1081" d="M543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117z" /> +<glyph unicode="Z" horiz-adv-x="1180" d="M1098 0h-1016v76l856 1290h-817v96h954v-76l-858 -1290h881v-96z" /> +<glyph unicode="[" horiz-adv-x="653" d="M602 -324h-428v1786h428v-94h-330v-1597h330v-95z" /> +<glyph unicode="\" horiz-adv-x="698" d="M127 1462l547 -1462h-103l-546 1462h102z" /> +<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" /> +<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" /> +<glyph unicode="_" horiz-adv-x="842" d="M846 -266h-850v82h850v-82z" /> +<glyph unicode="`" horiz-adv-x="1182" d="M776 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="a" horiz-adv-x="1085" d="M842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5z" /> +<glyph unicode="b" horiz-adv-x="1219" d="M641 1108q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46zM639 1018q-192 0 -275 -110t-83 -363v-17q0 -246 86.5 -353t269.5 -107 q178 0 268 124.5t90 354.5q0 471 -356 471z" /> +<glyph unicode="c" horiz-adv-x="973" d="M616 -20q-233 0 -365 147t-132 410q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51z" /> +<glyph unicode="d" horiz-adv-x="1219" d="M580 1108q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408q0 282 118 431t343 149zM580 1018q-178 0 -267.5 -125t-89.5 -363q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5 t-273.5 110.5z" /> +<glyph unicode="e" horiz-adv-x="1124" d="M621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5z" /> +<glyph unicode="f" horiz-adv-x="614" d="M586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86z" /> +<glyph unicode="g" horiz-adv-x="1071" d="M1030 1087v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220q0 112 69.5 186 t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" /> +<glyph unicode="h" horiz-adv-x="1208" d="M940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98z" /> +<glyph unicode="i" horiz-adv-x="463" d="M281 0h-99v1087h99v-1087zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" /> +<glyph unicode="j" horiz-adv-x="463" d="M37 -492q-80 0 -135 25v86q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" /> +<glyph unicode="k" horiz-adv-x="991" d="M279 477l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99v1556h99v-780l-7 -299h5z" /> +<glyph unicode="l" horiz-adv-x="463" d="M281 0h-99v1556h99v-1556z" /> +<glyph unicode="m" horiz-adv-x="1808" d="M1540 0v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98z" /> +<glyph unicode="n" horiz-adv-x="1208" d="M940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98z" /> +<glyph unicode="o" horiz-adv-x="1200" d="M1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " /> +<glyph unicode="p" horiz-adv-x="1219" d="M647 -20q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5zM645 68q167 0 258.5 124t91.5 347q0 479 -346 479q-190 0 -279 -104.5t-89 -340.5v-32 q0 -255 85.5 -364t278.5 -109z" /> +<glyph unicode="q" horiz-adv-x="1219" d="M569 -20q-214 0 -332 142t-118 410q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190zM571 68q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124t-91.5 -364q0 -229 89.5 -345.5 t258.5 -116.5z" /> +<glyph unicode="r" horiz-adv-x="797" d="M610 1108q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99v1087h84l10 -196h7q67 120 143 168.5t184 48.5z" /> +<glyph unicode="s" horiz-adv-x="954" d="M856 283q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44 t-78 -122q0 -85 60.5 -136t236.5 -114q147 -53 214 -95.5t100.5 -96.5t33.5 -127z" /> +<glyph unicode="t" horiz-adv-x="686" d="M469 68q94 0 164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60z" /> +<glyph unicode="u" horiz-adv-x="1208" d="M268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98z" /> +<glyph unicode="v" horiz-adv-x="940" d="M420 0l-420 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" /> +<glyph unicode="w" horiz-adv-x="1481" d="M1051 0l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98l-311 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104z" /> +<glyph unicode="x" horiz-adv-x="1020" d="M449 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" /> +<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" /> +<glyph unicode="z" horiz-adv-x="944" d="M858 0h-776v63l645 936h-598v88h727v-63l-649 -936h651v-88z" /> +<glyph unicode="{" horiz-adv-x="723" d="M389 -27q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322z" /> +<glyph unicode="|" horiz-adv-x="1108" d="M508 1561h92v-2067h-92v2067z" /> +<glyph unicode="}" horiz-adv-x="723" d="M334 295q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5t-277.5 -75.5v91q141 2 201.5 52.5 t60.5 153.5v322z" /> +<glyph unicode="~" d="M334 745q-49 0 -108 -30.5t-115 -89.5v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57z" /> +<glyph unicode="¡" horiz-adv-x="492" d="M215 711h61l29 -1086h-119zM166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" /> +<glyph unicode="¢" d="M602 190q-186 30 -288.5 175t-102.5 380q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210z" /> +<glyph unicode="£" d="M412 676v-256q0 -116 -35 -196t-113 -128h809v-96h-995v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411z" /> +<glyph unicode="¤" d="M991 723q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142l-59 60l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258zM584 395 q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233t94.5 -232t229.5 -96z" /> +<glyph unicode="¥" d="M586 666l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278l-430 788h117z" /> +<glyph unicode="¦" horiz-adv-x="1108" d="M508 1561h92v-764h-92v764zM508 258h92v-764h-92v764z" /> +<glyph unicode="§" horiz-adv-x="1057" d="M145 813q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5 q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5zM246 825q0 -65 31.5 -104t105.5 -75t250 -99 q82 41 126 98t44 121q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" /> +<glyph unicode="¨" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="©" horiz-adv-x="1704" d="M897 1092q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115t-101.5 331q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100 t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329z " /> +<glyph unicode="ª" horiz-adv-x="686" d="M512 813l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5 q-116 -6 -177 -36.5t-61 -98.5z" /> +<glyph unicode="«" horiz-adv-x="885" d="M82 543l309 393l62 -43l-254 -363l254 -362l-62 -43l-309 391v27zM442 543l310 393l61 -43l-254 -363l254 -362l-61 -43l-310 391v27z" /> +<glyph unicode="¬" d="M1038 764v-494h-82v412h-845v82h927z" /> +<glyph unicode="­" horiz-adv-x="659" d="M92 512zM92 512v82h475v-82h-475z" /> +<glyph unicode="®" horiz-adv-x="1704" d="M709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354zM1120 918q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101v880h211q143 0 222 -62t79 -191zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377 q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329z" /> +<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v82h1036v-82z" /> +<glyph unicode="°" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" /> +<glyph unicode="±" d="M111 1zM111 1v82h948v-82h-948zM625 764h434v-82h-434v-432h-82v432h-432v82h432v434h82v-434z" /> +<glyph unicode="²" horiz-adv-x="688" d="M629 586h-576v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88z" /> +<glyph unicode="³" horiz-adv-x="688" d="M616 1260q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78 l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163z" /> +<glyph unicode="´" horiz-adv-x="1182" d="M393 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="µ" horiz-adv-x="1221" d="M281 1087v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99v1579h99z" /> +<glyph unicode="¶" horiz-adv-x="1341" d="M1106 -260h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h543v-1816z" /> +<glyph unicode="·" horiz-adv-x="487" d="M162 623zM162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" /> +<glyph unicode="¸" horiz-adv-x="420" d="M393 -291q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" /> +<glyph unicode="¹" horiz-adv-x="688" d="M350 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77z" /> +<glyph unicode="º" horiz-adv-x="739" d="M670 1141q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" /> +<glyph unicode="»" horiz-adv-x="885" d="M803 518l-309 -393l-62 43l254 362l-254 363l62 43l309 -391v-27zM442 518l-309 -393l-61 43l254 362l-254 363l61 43l309 -391v-27z" /> +<glyph unicode="¼" horiz-adv-x="1516" d="M59 0zM333 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77zM1148 1462l-811 -1462h-94l811 1462h94zM1392 242h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM1173 320v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" /> +<glyph unicode="½" horiz-adv-x="1516" d="M11 0zM285 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77zM1073 1462l-811 -1462h-94l811 1462h94zM1403 1h-576v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5 q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88z" /> +<glyph unicode="¾" horiz-adv-x="1516" d="M41 0zM616 1260q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5 q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163zM1300 1462l-811 -1462h-94l811 1462h94zM1495 242h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM1276 320v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" /> +<glyph unicode="¿" horiz-adv-x="862" d="M569 711v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99t-104.5 269q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94 t15 145.5v15h82zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" /> +<glyph unicode="À" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM720 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="Á" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="Â" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="Ã" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM784 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59 q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" /> +<glyph unicode="Ä" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="Å" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM836 1610q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" /> +<glyph unicode="Æ" horiz-adv-x="1653" d="M1528 0h-717v516h-475l-227 -516h-111l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94zM377 608h434v760h-100z" /> +<glyph unicode="Ç" horiz-adv-x="1272" d="M129 0zM831 1391q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80zM911 -291q0 -100 -67.5 -150.5t-188.5 -50.5 q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" /> +<glyph unicode="È" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM697 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="É" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM463 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="Ê" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM315 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="Ë" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="Ì" horiz-adv-x="516" d="M0 0zM207 0v1462h102v-1462h-102zM320 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="Í" horiz-adv-x="516" d="M191 0zM207 0v1462h102v-1462h-102zM191 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="Î" horiz-adv-x="516" d="M0 0zM207 0v1462h102v-1462h-102zM-32 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="Ï" horiz-adv-x="516" d="M5 0zM207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="Ð" horiz-adv-x="1466" d="M1317 745q0 -368 -193 -556.5t-567 -188.5h-350v678h-160v94h160v690h395q350 0 532.5 -183t182.5 -534zM1206 741q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588h242q655 0 655 651z" /> +<glyph unicode="Ñ" horiz-adv-x="1477" d="M207 0zM1270 0h-103l-866 1298h-8q12 -232 12 -350v-948h-98v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462zM897 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59 q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" /> +<glyph unicode="Ò" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM885 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="Ó" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="Ô" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="Õ" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM940 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" /> +<glyph unicode="Ö" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="×" d="M584 780l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408l-407 407l57 58z" /> +<glyph unicode="Ø" horiz-adv-x="1565" d="M1436 733q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570zM1325 733q0 315 -139 486l-742 -1037q133 -106 338 -106 q264 0 403.5 170t139.5 487zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102q-261 0 -402.5 -170t-141.5 -483z" /> +<glyph unicode="Ù" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM833 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="Ú" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM633 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="Û" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM444 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="Ü" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66 t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="Ý" horiz-adv-x="1081" d="M0 0zM543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117zM434 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="Þ" horiz-adv-x="1198" d="M1087 778q0 -212 -144 -325t-408 -113h-226v-340h-102v1462h102v-264h256q522 0 522 -420zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" /> +<glyph unicode="ß" horiz-adv-x="1194" d="M961 1284q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5 q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5z" /> +<glyph unicode="à" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM638 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="á" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM422 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="â" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM251 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="ã" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM697 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5 h76q-16 -116 -69 -177t-132 -61z" /> +<glyph unicode="ä" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="å" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM759 1456q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" /> +<glyph unicode="æ" horiz-adv-x="1731" d="M1243 -20q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715 q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14zM434 70q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5q0 -102 61 -158.5t170 -56.5zM1217 1020q-284 0 -314 -402h604q0 188 -77.5 295t-212.5 107z" /> +<glyph unicode="ç" horiz-adv-x="973" d="M119 0zM616 -20q-233 0 -365 147t-132 410q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51zM723 -291q0 -100 -67.5 -150.5t-188.5 -50.5 q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" /> +<glyph unicode="è" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM685 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="é" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM452 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="ê" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM290 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="ë" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="ì" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM349 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="í" horiz-adv-x="463" d="M107 0zM281 0h-99v1087h99v-1087zM107 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="î" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM-58 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="ï" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="ð" horiz-adv-x="1174" d="M1055 559q0 -276 -124 -427.5t-349 -151.5q-214 0 -339.5 130t-125.5 361q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121 q154 -151 230.5 -353t76.5 -431zM950 557q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364z" /> +<glyph unicode="ñ" horiz-adv-x="1208" d="M182 0zM940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98zM779 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5 t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" /> +<glyph unicode="ò" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM718 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="ó" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM499 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="ô" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM309 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="õ" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM761 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" /> +<glyph unicode="ö" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="÷" d="M111 682v82h948v-82h-948zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" /> +<glyph unicode="ø" horiz-adv-x="1200" d="M1081 545q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM977 545q0 190 -72 309l-543 -702q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5z" /> +<glyph unicode="ù" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM687 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" /> +<glyph unicode="ú" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM495 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="û" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM313 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70 v16z" /> +<glyph unicode="ü" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86 t-64 -86q-63 0 -63 86z" /> +<glyph unicode="ý" horiz-adv-x="940" d="M0 0zM0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1257q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70v16z" /> +<glyph unicode="þ" horiz-adv-x="1219" d="M281 918q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99v2048h99v-391l-7 -247h7zM645 68q167 0 258.5 124t91.5 347q0 479 -348 479q-193 0 -279.5 -105t-86.5 -354v-18 q0 -255 85.5 -364t278.5 -109z" /> +<glyph unicode="ÿ" horiz-adv-x="940" d="M0 0zM0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="ı" horiz-adv-x="463" d="M281 0h-99v1087h99v-1087z" /> +<glyph unicode="Œ" horiz-adv-x="1839" d="M1714 0h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94zM782 80q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5q0 -315 140.5 -484t401.5 -169z" /> +<glyph unicode="œ" horiz-adv-x="1942" d="M1438 -20q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197t-252 -69q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56 v-90q-92 -40 -170 -54.5t-172 -14.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1409 1020q-155 0 -242 -104t-102 -298h653q0 189 -82 295.5t-227 106.5z" /> +<glyph unicode="Ÿ" horiz-adv-x="1081" d="M0 0zM543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" /> +<glyph unicode="ˆ" horiz-adv-x="1182" d="M299 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" /> +<glyph unicode="˚" horiz-adv-x="1182" d="M805 1456q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" /> +<glyph unicode="˜" horiz-adv-x="1182" d="M780 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="635" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="238" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode=" " horiz-adv-x="105" /> +<glyph unicode="‐" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" /> +<glyph unicode="‑" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" /> +<glyph unicode="‒" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" /> +<glyph unicode="–" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" /> +<glyph unicode="—" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" /> +<glyph unicode="‘" horiz-adv-x="297" d="M41 961l-12 20q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" /> +<glyph unicode="’" horiz-adv-x="297" d="M256 1462l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117z" /> +<glyph unicode="‚" horiz-adv-x="451" d="M68 0zM295 238l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117z" /> +<glyph unicode="“" horiz-adv-x="614" d="M358 961l-12 20q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117zM41 961l-12 20q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" /> +<glyph unicode="”" horiz-adv-x="614" d="M256 1462l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117zM573 1462l13 -20q-36 -128 -85 -261t-89 -220h-66q30 98 63 248.5t48 252.5h116z" /> +<glyph unicode="„" horiz-adv-x="768" d="M68 0zM295 238l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117zM612 238l13 -20q-36 -128 -85 -261t-89 -220h-66q30 98 63 248.5t48 252.5h116z" /> +<glyph unicode="•" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" /> +<glyph unicode="…" horiz-adv-x="1466" d="M162 0zM162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode="‹" horiz-adv-x="524" d="M82 543l309 393l62 -43l-254 -363l254 -362l-62 -43l-309 391v27z" /> +<glyph unicode="›" horiz-adv-x="524" d="M442 518l-309 -393l-61 43l254 362l-254 363l61 43l309 -391v-27z" /> +<glyph unicode="⁄" horiz-adv-x="246" d="M573 1462l-811 -1462h-94l811 1462h94z" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode="⁴" horiz-adv-x="688" d="M657 827h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM438 905v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" /> +<glyph unicode="€" d="M803 1397q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180v82h172q-4 38 -4 113l4 102h-172v82h184 q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72z" /> +<glyph unicode="™" horiz-adv-x="1485" d="M313 741h-86v643h-217v78h522v-78h-219v-643zM913 741l-221 609h-6l4 -201v-408h-82v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74z" /> +<glyph unicode="−" d="M111 682v82h948v-82h-948z" /> +<glyph unicode="" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" /> +<glyph horiz-adv-x="1219" d="M0 0z" /> +<hkern u1=""" u2="Ÿ" k="-20" /> +<hkern u1=""" u2="œ" k="123" /> +<hkern u1=""" u2="ü" k="61" /> +<hkern u1=""" u2="û" k="61" /> +<hkern u1=""" u2="ú" k="61" /> +<hkern u1=""" u2="ù" k="61" /> +<hkern u1=""" u2="ø" k="123" /> +<hkern u1=""" u2="ö" k="123" /> +<hkern u1=""" u2="õ" k="123" /> +<hkern u1=""" u2="ô" k="123" /> +<hkern u1=""" u2="ó" k="123" /> +<hkern u1=""" u2="ò" k="123" /> +<hkern u1=""" u2="ë" k="123" /> +<hkern u1=""" u2="ê" k="123" /> +<hkern u1=""" u2="é" k="123" /> +<hkern u1=""" u2="è" k="123" /> +<hkern u1=""" u2="ç" k="123" /> +<hkern u1=""" u2="æ" k="82" /> +<hkern u1=""" u2="å" k="82" /> +<hkern u1=""" u2="ä" k="82" /> +<hkern u1=""" u2="ã" k="82" /> +<hkern u1=""" u2="â" k="82" /> +<hkern u1=""" u2="á" k="82" /> +<hkern u1=""" u2="à" k="123" /> +<hkern u1=""" u2="Ý" k="-20" /> +<hkern u1=""" u2="Å" k="143" /> +<hkern u1=""" u2="Ä" k="143" /> +<hkern u1=""" u2="Ã" k="143" /> +<hkern u1=""" u2="Â" k="143" /> +<hkern u1=""" u2="Á" k="143" /> +<hkern u1=""" u2="À" k="143" /> +<hkern u1=""" u2="u" k="61" /> +<hkern u1=""" u2="s" k="61" /> +<hkern u1=""" u2="r" k="61" /> +<hkern u1=""" u2="q" k="123" /> +<hkern u1=""" u2="p" k="61" /> +<hkern u1=""" u2="o" k="123" /> +<hkern u1=""" u2="n" k="61" /> +<hkern u1=""" u2="m" k="61" /> +<hkern u1=""" u2="g" k="61" /> +<hkern u1=""" u2="e" k="123" /> +<hkern u1=""" u2="d" k="123" /> +<hkern u1=""" u2="c" k="123" /> +<hkern u1=""" u2="a" k="82" /> +<hkern u1=""" u2="Y" k="-20" /> +<hkern u1=""" u2="W" k="-41" /> +<hkern u1=""" u2="V" k="-41" /> +<hkern u1=""" u2="T" k="-41" /> +<hkern u1=""" u2="A" k="143" /> +<hkern u1="'" u2="Ÿ" k="-20" /> +<hkern u1="'" u2="œ" k="123" /> +<hkern u1="'" u2="ü" k="61" /> +<hkern u1="'" u2="û" k="61" /> +<hkern u1="'" u2="ú" k="61" /> +<hkern u1="'" u2="ù" k="61" /> +<hkern u1="'" u2="ø" k="123" /> +<hkern u1="'" u2="ö" k="123" /> +<hkern u1="'" u2="õ" k="123" /> +<hkern u1="'" u2="ô" k="123" /> +<hkern u1="'" u2="ó" k="123" /> +<hkern u1="'" u2="ò" k="123" /> +<hkern u1="'" u2="ë" k="123" /> +<hkern u1="'" u2="ê" k="123" /> +<hkern u1="'" u2="é" k="123" /> +<hkern u1="'" u2="è" k="123" /> +<hkern u1="'" u2="ç" k="123" /> +<hkern u1="'" u2="æ" k="82" /> +<hkern u1="'" u2="å" k="82" /> +<hkern u1="'" u2="ä" k="82" /> +<hkern u1="'" u2="ã" k="82" /> +<hkern u1="'" u2="â" k="82" /> +<hkern u1="'" u2="á" k="82" /> +<hkern u1="'" u2="à" k="123" /> +<hkern u1="'" u2="Ý" k="-20" /> +<hkern u1="'" u2="Å" k="143" /> +<hkern u1="'" u2="Ä" k="143" /> +<hkern u1="'" u2="Ã" k="143" /> +<hkern u1="'" u2="Â" k="143" /> +<hkern u1="'" u2="Á" k="143" /> +<hkern u1="'" u2="À" k="143" /> +<hkern u1="'" u2="u" k="61" /> +<hkern u1="'" u2="s" k="61" /> +<hkern u1="'" u2="r" k="61" /> +<hkern u1="'" u2="q" k="123" /> +<hkern u1="'" u2="p" k="61" /> +<hkern u1="'" u2="o" k="123" /> +<hkern u1="'" u2="n" k="61" /> +<hkern u1="'" u2="m" k="61" /> +<hkern u1="'" u2="g" k="61" /> +<hkern u1="'" u2="e" k="123" /> +<hkern u1="'" u2="d" k="123" /> +<hkern u1="'" u2="c" k="123" /> +<hkern u1="'" u2="a" k="82" /> +<hkern u1="'" u2="Y" k="-20" /> +<hkern u1="'" u2="W" k="-41" /> +<hkern u1="'" u2="V" k="-41" /> +<hkern u1="'" u2="T" k="-41" /> +<hkern u1="'" u2="A" k="143" /> +<hkern u1="(" u2="J" k="-184" /> +<hkern u1="," u2="Ÿ" k="123" /> +<hkern u1="," u2="Œ" k="102" /> +<hkern u1="," u2="Ý" k="123" /> +<hkern u1="," u2="Ü" k="41" /> +<hkern u1="," u2="Û" k="41" /> +<hkern u1="," u2="Ú" k="41" /> +<hkern u1="," u2="Ù" k="41" /> +<hkern u1="," u2="Ø" k="102" /> +<hkern u1="," u2="Ö" k="102" /> +<hkern u1="," u2="Õ" k="102" /> +<hkern u1="," u2="Ô" k="102" /> +<hkern u1="," u2="Ó" k="102" /> +<hkern u1="," u2="Ò" k="102" /> +<hkern u1="," u2="Ç" k="102" /> +<hkern u1="," u2="Y" k="123" /> +<hkern u1="," u2="W" k="123" /> +<hkern u1="," u2="V" k="123" /> +<hkern u1="," u2="U" k="41" /> +<hkern u1="," u2="T" k="143" /> +<hkern u1="," u2="Q" k="102" /> +<hkern u1="," u2="O" k="102" /> +<hkern u1="," u2="G" k="102" /> +<hkern u1="," u2="C" k="102" /> +<hkern u1="-" u2="T" k="82" /> +<hkern u1="." u2="Ÿ" k="123" /> +<hkern u1="." u2="Œ" k="102" /> +<hkern u1="." u2="Ý" k="123" /> +<hkern u1="." u2="Ü" k="41" /> +<hkern u1="." u2="Û" k="41" /> +<hkern u1="." u2="Ú" k="41" /> +<hkern u1="." u2="Ù" k="41" /> +<hkern u1="." u2="Ø" k="102" /> +<hkern u1="." u2="Ö" k="102" /> +<hkern u1="." u2="Õ" k="102" /> +<hkern u1="." u2="Ô" k="102" /> +<hkern u1="." u2="Ó" k="102" /> +<hkern u1="." u2="Ò" k="102" /> +<hkern u1="." u2="Ç" k="102" /> +<hkern u1="." u2="Y" k="123" /> +<hkern u1="." u2="W" k="123" /> +<hkern u1="." u2="V" k="123" /> +<hkern u1="." u2="U" k="41" /> +<hkern u1="." u2="T" k="143" /> +<hkern u1="." u2="Q" k="102" /> +<hkern u1="." u2="O" k="102" /> +<hkern u1="." u2="G" k="102" /> +<hkern u1="." u2="C" k="102" /> +<hkern u1="A" u2="”" k="143" /> +<hkern u1="A" u2="’" k="143" /> +<hkern u1="A" u2="Ÿ" k="123" /> +<hkern u1="A" u2="Œ" k="41" /> +<hkern u1="A" u2="Ý" k="123" /> +<hkern u1="A" u2="Ø" k="41" /> +<hkern u1="A" u2="Ö" k="41" /> +<hkern u1="A" u2="Õ" k="41" /> +<hkern u1="A" u2="Ô" k="41" /> +<hkern u1="A" u2="Ó" k="41" /> +<hkern u1="A" u2="Ò" k="41" /> +<hkern u1="A" u2="Ç" k="41" /> +<hkern u1="A" u2="Y" k="123" /> +<hkern u1="A" u2="W" k="82" /> +<hkern u1="A" u2="V" k="82" /> +<hkern u1="A" u2="T" k="143" /> +<hkern u1="A" u2="Q" k="41" /> +<hkern u1="A" u2="O" k="41" /> +<hkern u1="A" u2="J" k="-266" /> +<hkern u1="A" u2="G" k="41" /> +<hkern u1="A" u2="C" k="41" /> +<hkern u1="A" u2="'" k="143" /> +<hkern u1="A" u2=""" k="143" /> +<hkern u1="B" u2="„" k="82" /> +<hkern u1="B" u2="‚" k="82" /> +<hkern u1="B" u2="Ÿ" k="20" /> +<hkern u1="B" u2="Ý" k="20" /> +<hkern u1="B" u2="Å" k="41" /> +<hkern u1="B" u2="Ä" k="41" /> +<hkern u1="B" u2="Ã" k="41" /> +<hkern u1="B" u2="Â" k="41" /> +<hkern u1="B" u2="Á" k="41" /> +<hkern u1="B" u2="À" k="41" /> +<hkern u1="B" u2="Z" k="20" /> +<hkern u1="B" u2="Y" k="20" /> +<hkern u1="B" u2="X" k="41" /> +<hkern u1="B" u2="W" k="20" /> +<hkern u1="B" u2="V" k="20" /> +<hkern u1="B" u2="T" k="61" /> +<hkern u1="B" u2="A" k="41" /> +<hkern u1="B" u2="." k="82" /> +<hkern u1="B" u2="," k="82" /> +<hkern u1="C" u2="Œ" k="41" /> +<hkern u1="C" u2="Ø" k="41" /> +<hkern u1="C" u2="Ö" k="41" /> +<hkern u1="C" u2="Õ" k="41" /> +<hkern u1="C" u2="Ô" k="41" /> +<hkern u1="C" u2="Ó" k="41" /> +<hkern u1="C" u2="Ò" k="41" /> +<hkern u1="C" u2="Ç" k="41" /> +<hkern u1="C" u2="Q" k="41" /> +<hkern u1="C" u2="O" k="41" /> +<hkern u1="C" u2="G" k="41" /> +<hkern u1="C" u2="C" k="41" /> +<hkern u1="D" u2="„" k="82" /> +<hkern u1="D" u2="‚" k="82" /> +<hkern u1="D" u2="Ÿ" k="20" /> +<hkern u1="D" u2="Ý" k="20" /> +<hkern u1="D" u2="Å" k="41" /> +<hkern u1="D" u2="Ä" k="41" /> +<hkern u1="D" u2="Ã" k="41" /> +<hkern u1="D" u2="Â" k="41" /> +<hkern u1="D" u2="Á" k="41" /> +<hkern u1="D" u2="À" k="41" /> +<hkern u1="D" u2="Z" k="20" /> +<hkern u1="D" u2="Y" k="20" /> +<hkern u1="D" u2="X" k="41" /> +<hkern u1="D" u2="W" k="20" /> +<hkern u1="D" u2="V" k="20" /> +<hkern u1="D" u2="T" k="61" /> +<hkern u1="D" u2="A" k="41" /> +<hkern u1="D" u2="." k="82" /> +<hkern u1="D" u2="," k="82" /> +<hkern u1="E" u2="J" k="-123" /> +<hkern u1="F" u2="„" k="123" /> +<hkern u1="F" u2="‚" k="123" /> +<hkern u1="F" u2="Å" k="41" /> +<hkern u1="F" u2="Ä" k="41" /> +<hkern u1="F" u2="Ã" k="41" /> +<hkern u1="F" u2="Â" k="41" /> +<hkern u1="F" u2="Á" k="41" /> +<hkern u1="F" u2="À" k="41" /> +<hkern u1="F" u2="A" k="41" /> +<hkern u1="F" u2="?" k="-41" /> +<hkern u1="F" u2="." k="123" /> +<hkern u1="F" u2="," k="123" /> +<hkern u1="K" u2="Œ" k="41" /> +<hkern u1="K" u2="Ø" k="41" /> +<hkern u1="K" u2="Ö" k="41" /> +<hkern u1="K" u2="Õ" k="41" /> +<hkern u1="K" u2="Ô" k="41" /> +<hkern u1="K" u2="Ó" k="41" /> +<hkern u1="K" u2="Ò" k="41" /> +<hkern u1="K" u2="Ç" k="41" /> +<hkern u1="K" u2="Q" k="41" /> +<hkern u1="K" u2="O" k="41" /> +<hkern u1="K" u2="G" k="41" /> +<hkern u1="K" u2="C" k="41" /> +<hkern u1="L" u2="”" k="164" /> +<hkern u1="L" u2="’" k="164" /> +<hkern u1="L" u2="Ÿ" k="61" /> +<hkern u1="L" u2="Œ" k="41" /> +<hkern u1="L" u2="Ý" k="61" /> +<hkern u1="L" u2="Ü" k="20" /> +<hkern u1="L" u2="Û" k="20" /> +<hkern u1="L" u2="Ú" k="20" /> +<hkern u1="L" u2="Ù" k="20" /> +<hkern u1="L" u2="Ø" k="41" /> +<hkern u1="L" u2="Ö" k="41" /> +<hkern u1="L" u2="Õ" k="41" /> +<hkern u1="L" u2="Ô" k="41" /> +<hkern u1="L" u2="Ó" k="41" /> +<hkern u1="L" u2="Ò" k="41" /> +<hkern u1="L" u2="Ç" k="41" /> +<hkern u1="L" u2="Y" k="61" /> +<hkern u1="L" u2="W" k="41" /> +<hkern u1="L" u2="V" k="41" /> +<hkern u1="L" u2="U" k="20" /> +<hkern u1="L" u2="T" k="41" /> +<hkern u1="L" u2="Q" k="41" /> +<hkern u1="L" u2="O" k="41" /> +<hkern u1="L" u2="G" k="41" /> +<hkern u1="L" u2="C" k="41" /> +<hkern u1="L" u2="'" k="164" /> +<hkern u1="L" u2=""" k="164" /> +<hkern u1="O" u2="„" k="82" /> +<hkern u1="O" u2="‚" k="82" /> +<hkern u1="O" u2="Ÿ" k="20" /> +<hkern u1="O" u2="Ý" k="20" /> +<hkern u1="O" u2="Å" k="41" /> +<hkern u1="O" u2="Ä" k="41" /> +<hkern u1="O" u2="Ã" k="41" /> +<hkern u1="O" u2="Â" k="41" /> +<hkern u1="O" u2="Á" k="41" /> +<hkern u1="O" u2="À" k="41" /> +<hkern u1="O" u2="Z" k="20" /> +<hkern u1="O" u2="Y" k="20" /> +<hkern u1="O" u2="X" k="41" /> +<hkern u1="O" u2="W" k="20" /> +<hkern u1="O" u2="V" k="20" /> +<hkern u1="O" u2="T" k="61" /> +<hkern u1="O" u2="A" k="41" /> +<hkern u1="O" u2="." k="82" /> +<hkern u1="O" u2="," k="82" /> +<hkern u1="P" u2="„" k="266" /> +<hkern u1="P" u2="‚" k="266" /> +<hkern u1="P" u2="Å" k="102" /> +<hkern u1="P" u2="Ä" k="102" /> +<hkern u1="P" u2="Ã" k="102" /> +<hkern u1="P" u2="Â" k="102" /> +<hkern u1="P" u2="Á" k="102" /> +<hkern u1="P" u2="À" k="102" /> +<hkern u1="P" u2="Z" k="20" /> +<hkern u1="P" u2="X" k="41" /> +<hkern u1="P" u2="A" k="102" /> +<hkern u1="P" u2="." k="266" /> +<hkern u1="P" u2="," k="266" /> +<hkern u1="Q" u2="„" k="82" /> +<hkern u1="Q" u2="‚" k="82" /> +<hkern u1="Q" u2="Ÿ" k="20" /> +<hkern u1="Q" u2="Ý" k="20" /> +<hkern u1="Q" u2="Å" k="41" /> +<hkern u1="Q" u2="Ä" k="41" /> +<hkern u1="Q" u2="Ã" k="41" /> +<hkern u1="Q" u2="Â" k="41" /> +<hkern u1="Q" u2="Á" k="41" /> +<hkern u1="Q" u2="À" k="41" /> +<hkern u1="Q" u2="Z" k="20" /> +<hkern u1="Q" u2="Y" k="20" /> +<hkern u1="Q" u2="X" k="41" /> +<hkern u1="Q" u2="W" k="20" /> +<hkern u1="Q" u2="V" k="20" /> +<hkern u1="Q" u2="T" k="61" /> +<hkern u1="Q" u2="A" k="41" /> +<hkern u1="Q" u2="." k="82" /> +<hkern u1="Q" u2="," k="82" /> +<hkern u1="T" u2="„" k="123" /> +<hkern u1="T" u2="‚" k="123" /> +<hkern u1="T" u2="—" k="82" /> +<hkern u1="T" u2="–" k="82" /> +<hkern u1="T" u2="œ" k="143" /> +<hkern u1="T" u2="Œ" k="41" /> +<hkern u1="T" u2="ý" k="41" /> +<hkern u1="T" u2="ü" k="102" /> +<hkern u1="T" u2="û" k="102" /> +<hkern u1="T" u2="ú" k="102" /> +<hkern u1="T" u2="ù" k="102" /> +<hkern u1="T" u2="ø" k="143" /> +<hkern u1="T" u2="ö" k="143" /> +<hkern u1="T" u2="õ" k="143" /> +<hkern u1="T" u2="ô" k="143" /> +<hkern u1="T" u2="ó" k="143" /> +<hkern u1="T" u2="ò" k="143" /> +<hkern u1="T" u2="ë" k="143" /> +<hkern u1="T" u2="ê" k="143" /> +<hkern u1="T" u2="é" k="143" /> +<hkern u1="T" u2="è" k="143" /> +<hkern u1="T" u2="ç" k="143" /> +<hkern u1="T" u2="æ" k="164" /> +<hkern u1="T" u2="å" k="164" /> +<hkern u1="T" u2="ä" k="164" /> +<hkern u1="T" u2="ã" k="164" /> +<hkern u1="T" u2="â" k="164" /> +<hkern u1="T" u2="á" k="164" /> +<hkern u1="T" u2="à" k="143" /> +<hkern u1="T" u2="Ø" k="41" /> +<hkern u1="T" u2="Ö" k="41" /> +<hkern u1="T" u2="Õ" k="41" /> +<hkern u1="T" u2="Ô" k="41" /> +<hkern u1="T" u2="Ó" k="41" /> +<hkern u1="T" u2="Ò" k="41" /> +<hkern u1="T" u2="Ç" k="41" /> +<hkern u1="T" u2="Å" k="143" /> +<hkern u1="T" u2="Ä" k="143" /> +<hkern u1="T" u2="Ã" k="143" /> +<hkern u1="T" u2="Â" k="143" /> +<hkern u1="T" u2="Á" k="143" /> +<hkern u1="T" u2="À" k="143" /> +<hkern u1="T" u2="z" k="82" /> +<hkern u1="T" u2="y" k="41" /> +<hkern u1="T" u2="x" k="41" /> +<hkern u1="T" u2="w" k="41" /> +<hkern u1="T" u2="v" k="41" /> +<hkern u1="T" u2="u" k="102" /> +<hkern u1="T" u2="s" k="123" /> +<hkern u1="T" u2="r" k="102" /> +<hkern u1="T" u2="q" k="143" /> +<hkern u1="T" u2="p" k="102" /> +<hkern u1="T" u2="o" k="143" /> +<hkern u1="T" u2="n" k="102" /> +<hkern u1="T" u2="m" k="102" /> +<hkern u1="T" u2="g" k="143" /> +<hkern u1="T" u2="e" k="143" /> +<hkern u1="T" u2="d" k="143" /> +<hkern u1="T" u2="c" k="143" /> +<hkern u1="T" u2="a" k="164" /> +<hkern u1="T" u2="T" k="-41" /> +<hkern u1="T" u2="Q" k="41" /> +<hkern u1="T" u2="O" k="41" /> +<hkern u1="T" u2="G" k="41" /> +<hkern u1="T" u2="C" k="41" /> +<hkern u1="T" u2="A" k="143" /> +<hkern u1="T" u2="?" k="-41" /> +<hkern u1="T" u2="." k="123" /> +<hkern u1="T" u2="-" k="82" /> +<hkern u1="T" u2="," k="123" /> +<hkern u1="U" u2="„" k="41" /> +<hkern u1="U" u2="‚" k="41" /> +<hkern u1="U" u2="Å" k="20" /> +<hkern u1="U" u2="Ä" k="20" /> +<hkern u1="U" u2="Ã" k="20" /> +<hkern u1="U" u2="Â" k="20" /> +<hkern u1="U" u2="Á" k="20" /> +<hkern u1="U" u2="À" k="20" /> +<hkern u1="U" u2="A" k="20" /> +<hkern u1="U" u2="." k="41" /> +<hkern u1="U" u2="," k="41" /> +<hkern u1="V" u2="„" k="102" /> +<hkern u1="V" u2="‚" k="102" /> +<hkern u1="V" u2="œ" k="41" /> +<hkern u1="V" u2="Œ" k="20" /> +<hkern u1="V" u2="ü" k="20" /> +<hkern u1="V" u2="û" k="20" /> +<hkern u1="V" u2="ú" k="20" /> +<hkern u1="V" u2="ù" k="20" /> +<hkern u1="V" u2="ø" k="41" /> +<hkern u1="V" u2="ö" k="41" /> +<hkern u1="V" u2="õ" k="41" /> +<hkern u1="V" u2="ô" k="41" /> +<hkern u1="V" u2="ó" k="41" /> +<hkern u1="V" u2="ò" k="41" /> +<hkern u1="V" u2="ë" k="41" /> +<hkern u1="V" u2="ê" k="41" /> +<hkern u1="V" u2="é" k="41" /> +<hkern u1="V" u2="è" k="41" /> +<hkern u1="V" u2="ç" k="41" /> +<hkern u1="V" u2="æ" k="41" /> +<hkern u1="V" u2="å" k="41" /> +<hkern u1="V" u2="ä" k="41" /> +<hkern u1="V" u2="ã" k="41" /> +<hkern u1="V" u2="â" k="41" /> +<hkern u1="V" u2="á" k="41" /> +<hkern u1="V" u2="à" k="41" /> +<hkern u1="V" u2="Ø" k="20" /> +<hkern u1="V" u2="Ö" k="20" /> +<hkern u1="V" u2="Õ" k="20" /> +<hkern u1="V" u2="Ô" k="20" /> +<hkern u1="V" u2="Ó" k="20" /> +<hkern u1="V" u2="Ò" k="20" /> +<hkern u1="V" u2="Ç" k="20" /> +<hkern u1="V" u2="Å" k="82" /> +<hkern u1="V" u2="Ä" k="82" /> +<hkern u1="V" u2="Ã" k="82" /> +<hkern u1="V" u2="Â" k="82" /> +<hkern u1="V" u2="Á" k="82" /> +<hkern u1="V" u2="À" k="82" /> +<hkern u1="V" u2="u" k="20" /> +<hkern u1="V" u2="s" k="20" /> +<hkern u1="V" u2="r" k="20" /> +<hkern u1="V" u2="q" k="41" /> +<hkern u1="V" u2="p" k="20" /> +<hkern u1="V" u2="o" k="41" /> +<hkern u1="V" u2="n" k="20" /> +<hkern u1="V" u2="m" k="20" /> +<hkern u1="V" u2="g" k="20" /> +<hkern u1="V" u2="e" k="41" /> +<hkern u1="V" u2="d" k="41" /> +<hkern u1="V" u2="c" k="41" /> +<hkern u1="V" u2="a" k="41" /> +<hkern u1="V" u2="Q" k="20" /> +<hkern u1="V" u2="O" k="20" /> +<hkern u1="V" u2="G" k="20" /> +<hkern u1="V" u2="C" k="20" /> +<hkern u1="V" u2="A" k="82" /> +<hkern u1="V" u2="?" k="-41" /> +<hkern u1="V" u2="." k="102" /> +<hkern u1="V" u2="," k="102" /> +<hkern u1="W" u2="„" k="102" /> +<hkern u1="W" u2="‚" k="102" /> +<hkern u1="W" u2="œ" k="41" /> +<hkern u1="W" u2="Œ" k="20" /> +<hkern u1="W" u2="ü" k="20" /> +<hkern u1="W" u2="û" k="20" /> +<hkern u1="W" u2="ú" k="20" /> +<hkern u1="W" u2="ù" k="20" /> +<hkern u1="W" u2="ø" k="41" /> +<hkern u1="W" u2="ö" k="41" /> +<hkern u1="W" u2="õ" k="41" /> +<hkern u1="W" u2="ô" k="41" /> +<hkern u1="W" u2="ó" k="41" /> +<hkern u1="W" u2="ò" k="41" /> +<hkern u1="W" u2="ë" k="41" /> +<hkern u1="W" u2="ê" k="41" /> +<hkern u1="W" u2="é" k="41" /> +<hkern u1="W" u2="è" k="41" /> +<hkern u1="W" u2="ç" k="41" /> +<hkern u1="W" u2="æ" k="41" /> +<hkern u1="W" u2="å" k="41" /> +<hkern u1="W" u2="ä" k="41" /> +<hkern u1="W" u2="ã" k="41" /> +<hkern u1="W" u2="â" k="41" /> +<hkern u1="W" u2="á" k="41" /> +<hkern u1="W" u2="à" k="41" /> +<hkern u1="W" u2="Ø" k="20" /> +<hkern u1="W" u2="Ö" k="20" /> +<hkern u1="W" u2="Õ" k="20" /> +<hkern u1="W" u2="Ô" k="20" /> +<hkern u1="W" u2="Ó" k="20" /> +<hkern u1="W" u2="Ò" k="20" /> +<hkern u1="W" u2="Ç" k="20" /> +<hkern u1="W" u2="Å" k="82" /> +<hkern u1="W" u2="Ä" k="82" /> +<hkern u1="W" u2="Ã" k="82" /> +<hkern u1="W" u2="Â" k="82" /> +<hkern u1="W" u2="Á" k="82" /> +<hkern u1="W" u2="À" k="82" /> +<hkern u1="W" u2="u" k="20" /> +<hkern u1="W" u2="s" k="20" /> +<hkern u1="W" u2="r" k="20" /> +<hkern u1="W" u2="q" k="41" /> +<hkern u1="W" u2="p" k="20" /> +<hkern u1="W" u2="o" k="41" /> +<hkern u1="W" u2="n" k="20" /> +<hkern u1="W" u2="m" k="20" /> +<hkern u1="W" u2="g" k="20" /> +<hkern u1="W" u2="e" k="41" /> +<hkern u1="W" u2="d" k="41" /> +<hkern u1="W" u2="c" k="41" /> +<hkern u1="W" u2="a" k="41" /> +<hkern u1="W" u2="Q" k="20" /> +<hkern u1="W" u2="O" k="20" /> +<hkern u1="W" u2="G" k="20" /> +<hkern u1="W" u2="C" k="20" /> +<hkern u1="W" u2="A" k="82" /> +<hkern u1="W" u2="?" k="-41" /> +<hkern u1="W" u2="." k="102" /> +<hkern u1="W" u2="," k="102" /> +<hkern u1="X" u2="Œ" k="41" /> +<hkern u1="X" u2="Ø" k="41" /> +<hkern u1="X" u2="Ö" k="41" /> +<hkern u1="X" u2="Õ" k="41" /> +<hkern u1="X" u2="Ô" k="41" /> +<hkern u1="X" u2="Ó" k="41" /> +<hkern u1="X" u2="Ò" k="41" /> +<hkern u1="X" u2="Ç" k="41" /> +<hkern u1="X" u2="Q" k="41" /> +<hkern u1="X" u2="O" k="41" /> +<hkern u1="X" u2="G" k="41" /> +<hkern u1="X" u2="C" k="41" /> +<hkern u1="Y" u2="„" k="123" /> +<hkern u1="Y" u2="‚" k="123" /> +<hkern u1="Y" u2="œ" k="102" /> +<hkern u1="Y" u2="Œ" k="41" /> +<hkern u1="Y" u2="ü" k="61" /> +<hkern u1="Y" u2="û" k="61" /> +<hkern u1="Y" u2="ú" k="61" /> +<hkern u1="Y" u2="ù" k="61" /> +<hkern u1="Y" u2="ø" k="102" /> +<hkern u1="Y" u2="ö" k="102" /> +<hkern u1="Y" u2="õ" k="102" /> +<hkern u1="Y" u2="ô" k="102" /> +<hkern u1="Y" u2="ó" k="102" /> +<hkern u1="Y" u2="ò" k="102" /> +<hkern u1="Y" u2="ë" k="102" /> +<hkern u1="Y" u2="ê" k="102" /> +<hkern u1="Y" u2="é" k="102" /> +<hkern u1="Y" u2="è" k="102" /> +<hkern u1="Y" u2="ç" k="102" /> +<hkern u1="Y" u2="æ" k="102" /> +<hkern u1="Y" u2="å" k="102" /> +<hkern u1="Y" u2="ä" k="102" /> +<hkern u1="Y" u2="ã" k="102" /> +<hkern u1="Y" u2="â" k="102" /> +<hkern u1="Y" u2="á" k="102" /> +<hkern u1="Y" u2="à" k="102" /> +<hkern u1="Y" u2="Ø" k="41" /> +<hkern u1="Y" u2="Ö" k="41" /> +<hkern u1="Y" u2="Õ" k="41" /> +<hkern u1="Y" u2="Ô" k="41" /> +<hkern u1="Y" u2="Ó" k="41" /> +<hkern u1="Y" u2="Ò" k="41" /> +<hkern u1="Y" u2="Ç" k="41" /> +<hkern u1="Y" u2="Å" k="123" /> +<hkern u1="Y" u2="Ä" k="123" /> +<hkern u1="Y" u2="Ã" k="123" /> +<hkern u1="Y" u2="Â" k="123" /> +<hkern u1="Y" u2="Á" k="123" /> +<hkern u1="Y" u2="À" k="123" /> +<hkern u1="Y" u2="z" k="41" /> +<hkern u1="Y" u2="u" k="61" /> +<hkern u1="Y" u2="s" k="82" /> +<hkern u1="Y" u2="r" k="61" /> +<hkern u1="Y" u2="q" k="102" /> +<hkern u1="Y" u2="p" k="61" /> +<hkern u1="Y" u2="o" k="102" /> +<hkern u1="Y" u2="n" k="61" /> +<hkern u1="Y" u2="m" k="61" /> +<hkern u1="Y" u2="g" k="41" /> +<hkern u1="Y" u2="e" k="102" /> +<hkern u1="Y" u2="d" k="102" /> +<hkern u1="Y" u2="c" k="102" /> +<hkern u1="Y" u2="a" k="102" /> +<hkern u1="Y" u2="Q" k="41" /> +<hkern u1="Y" u2="O" k="41" /> +<hkern u1="Y" u2="G" k="41" /> +<hkern u1="Y" u2="C" k="41" /> +<hkern u1="Y" u2="A" k="123" /> +<hkern u1="Y" u2="?" k="-41" /> +<hkern u1="Y" u2="." k="123" /> +<hkern u1="Y" u2="," k="123" /> +<hkern u1="Z" u2="Œ" k="20" /> +<hkern u1="Z" u2="Ø" k="20" /> +<hkern u1="Z" u2="Ö" k="20" /> +<hkern u1="Z" u2="Õ" k="20" /> +<hkern u1="Z" u2="Ô" k="20" /> +<hkern u1="Z" u2="Ó" k="20" /> +<hkern u1="Z" u2="Ò" k="20" /> +<hkern u1="Z" u2="Ç" k="20" /> +<hkern u1="Z" u2="Q" k="20" /> +<hkern u1="Z" u2="O" k="20" /> +<hkern u1="Z" u2="G" k="20" /> +<hkern u1="Z" u2="C" k="20" /> +<hkern u1="[" u2="J" k="-184" /> +<hkern u1="a" u2="”" k="20" /> +<hkern u1="a" u2="’" k="20" /> +<hkern u1="a" u2="'" k="20" /> +<hkern u1="a" u2=""" k="20" /> +<hkern u1="b" u2="”" k="20" /> +<hkern u1="b" u2="’" k="20" /> +<hkern u1="b" u2="ý" k="41" /> +<hkern u1="b" u2="z" k="20" /> +<hkern u1="b" u2="y" k="41" /> +<hkern u1="b" u2="x" k="41" /> +<hkern u1="b" u2="w" k="41" /> +<hkern u1="b" u2="v" k="41" /> +<hkern u1="b" u2="'" k="20" /> +<hkern u1="b" u2=""" k="20" /> +<hkern u1="c" u2="”" k="-41" /> +<hkern u1="c" u2="’" k="-41" /> +<hkern u1="c" u2="'" k="-41" /> +<hkern u1="c" u2=""" k="-41" /> +<hkern u1="e" u2="”" k="20" /> +<hkern u1="e" u2="’" k="20" /> +<hkern u1="e" u2="ý" k="41" /> +<hkern u1="e" u2="z" k="20" /> +<hkern u1="e" u2="y" k="41" /> +<hkern u1="e" u2="x" k="41" /> +<hkern u1="e" u2="w" k="41" /> +<hkern u1="e" u2="v" k="41" /> +<hkern u1="e" u2="'" k="20" /> +<hkern u1="e" u2=""" k="20" /> +<hkern u1="f" u2="”" k="-123" /> +<hkern u1="f" u2="’" k="-123" /> +<hkern u1="f" u2="'" k="-123" /> +<hkern u1="f" u2=""" k="-123" /> +<hkern u1="h" u2="”" k="20" /> +<hkern u1="h" u2="’" k="20" /> +<hkern u1="h" u2="'" k="20" /> +<hkern u1="h" u2=""" k="20" /> +<hkern u1="k" u2="œ" k="41" /> +<hkern u1="k" u2="ø" k="41" /> +<hkern u1="k" u2="ö" k="41" /> +<hkern u1="k" u2="õ" k="41" /> +<hkern u1="k" u2="ô" k="41" /> +<hkern u1="k" u2="ó" k="41" /> +<hkern u1="k" u2="ò" k="41" /> +<hkern u1="k" u2="ë" k="41" /> +<hkern u1="k" u2="ê" k="41" /> +<hkern u1="k" u2="é" k="41" /> +<hkern u1="k" u2="è" k="41" /> +<hkern u1="k" u2="ç" k="41" /> +<hkern u1="k" u2="à" k="41" /> +<hkern u1="k" u2="q" k="41" /> +<hkern u1="k" u2="o" k="41" /> +<hkern u1="k" u2="e" k="41" /> +<hkern u1="k" u2="d" k="41" /> +<hkern u1="k" u2="c" k="41" /> +<hkern u1="m" u2="”" k="20" /> +<hkern u1="m" u2="’" k="20" /> +<hkern u1="m" u2="'" k="20" /> +<hkern u1="m" u2=""" k="20" /> +<hkern u1="n" u2="”" k="20" /> +<hkern u1="n" u2="’" k="20" /> +<hkern u1="n" u2="'" k="20" /> +<hkern u1="n" u2=""" k="20" /> +<hkern u1="o" u2="”" k="20" /> +<hkern u1="o" u2="’" k="20" /> +<hkern u1="o" u2="ý" k="41" /> +<hkern u1="o" u2="z" k="20" /> +<hkern u1="o" u2="y" k="41" /> +<hkern u1="o" u2="x" k="41" /> +<hkern u1="o" u2="w" k="41" /> +<hkern u1="o" u2="v" k="41" /> +<hkern u1="o" u2="'" k="20" /> +<hkern u1="o" u2=""" k="20" /> +<hkern u1="p" u2="”" k="20" /> +<hkern u1="p" u2="’" k="20" /> +<hkern u1="p" u2="ý" k="41" /> +<hkern u1="p" u2="z" k="20" /> +<hkern u1="p" u2="y" k="41" /> +<hkern u1="p" u2="x" k="41" /> +<hkern u1="p" u2="w" k="41" /> +<hkern u1="p" u2="v" k="41" /> +<hkern u1="p" u2="'" k="20" /> +<hkern u1="p" u2=""" k="20" /> +<hkern u1="r" u2="”" k="-82" /> +<hkern u1="r" u2="’" k="-82" /> +<hkern u1="r" u2="œ" k="41" /> +<hkern u1="r" u2="ø" k="41" /> +<hkern u1="r" u2="ö" k="41" /> +<hkern u1="r" u2="õ" k="41" /> +<hkern u1="r" u2="ô" k="41" /> +<hkern u1="r" u2="ó" k="41" /> +<hkern u1="r" u2="ò" k="41" /> +<hkern u1="r" u2="ë" k="41" /> +<hkern u1="r" u2="ê" k="41" /> +<hkern u1="r" u2="é" k="41" /> +<hkern u1="r" u2="è" k="41" /> +<hkern u1="r" u2="ç" k="41" /> +<hkern u1="r" u2="æ" k="41" /> +<hkern u1="r" u2="å" k="41" /> +<hkern u1="r" u2="ä" k="41" /> +<hkern u1="r" u2="ã" k="41" /> +<hkern u1="r" u2="â" k="41" /> +<hkern u1="r" u2="á" k="41" /> +<hkern u1="r" u2="à" k="41" /> +<hkern u1="r" u2="q" k="41" /> +<hkern u1="r" u2="o" k="41" /> +<hkern u1="r" u2="g" k="20" /> +<hkern u1="r" u2="e" k="41" /> +<hkern u1="r" u2="d" k="41" /> +<hkern u1="r" u2="c" k="41" /> +<hkern u1="r" u2="a" k="41" /> +<hkern u1="r" u2="'" k="-82" /> +<hkern u1="r" u2=""" k="-82" /> +<hkern u1="t" u2="”" k="-41" /> +<hkern u1="t" u2="’" k="-41" /> +<hkern u1="t" u2="'" k="-41" /> +<hkern u1="t" u2=""" k="-41" /> +<hkern u1="v" u2="„" k="82" /> +<hkern u1="v" u2="”" k="-82" /> +<hkern u1="v" u2="‚" k="82" /> +<hkern u1="v" u2="’" k="-82" /> +<hkern u1="v" u2="?" k="-41" /> +<hkern u1="v" u2="." k="82" /> +<hkern u1="v" u2="," k="82" /> +<hkern u1="v" u2="'" k="-82" /> +<hkern u1="v" u2=""" k="-82" /> +<hkern u1="w" u2="„" k="82" /> +<hkern u1="w" u2="”" k="-82" /> +<hkern u1="w" u2="‚" k="82" /> +<hkern u1="w" u2="’" k="-82" /> +<hkern u1="w" u2="?" k="-41" /> +<hkern u1="w" u2="." k="82" /> +<hkern u1="w" u2="," k="82" /> +<hkern u1="w" u2="'" k="-82" /> +<hkern u1="w" u2=""" k="-82" /> +<hkern u1="x" u2="œ" k="41" /> +<hkern u1="x" u2="ø" k="41" /> +<hkern u1="x" u2="ö" k="41" /> +<hkern u1="x" u2="õ" k="41" /> +<hkern u1="x" u2="ô" k="41" /> +<hkern u1="x" u2="ó" k="41" /> +<hkern u1="x" u2="ò" k="41" /> +<hkern u1="x" u2="ë" k="41" /> +<hkern u1="x" u2="ê" k="41" /> +<hkern u1="x" u2="é" k="41" /> +<hkern u1="x" u2="è" k="41" /> +<hkern u1="x" u2="ç" k="41" /> +<hkern u1="x" u2="à" k="41" /> +<hkern u1="x" u2="q" k="41" /> +<hkern u1="x" u2="o" k="41" /> +<hkern u1="x" u2="e" k="41" /> +<hkern u1="x" u2="d" k="41" /> +<hkern u1="x" u2="c" k="41" /> +<hkern u1="y" u2="„" k="82" /> +<hkern u1="y" u2="”" k="-82" /> +<hkern u1="y" u2="‚" k="82" /> +<hkern u1="y" u2="’" k="-82" /> +<hkern u1="y" u2="?" k="-41" /> +<hkern u1="y" u2="." k="82" /> +<hkern u1="y" u2="," k="82" /> +<hkern u1="y" u2="'" k="-82" /> +<hkern u1="y" u2=""" k="-82" /> +<hkern u1="{" u2="J" k="-184" /> +<hkern u1="À" u2="”" k="143" /> +<hkern u1="À" u2="’" k="143" /> +<hkern u1="À" u2="Ÿ" k="123" /> +<hkern u1="À" u2="Œ" k="41" /> +<hkern u1="À" u2="Ý" k="123" /> +<hkern u1="À" u2="Ø" k="41" /> +<hkern u1="À" u2="Ö" k="41" /> +<hkern u1="À" u2="Õ" k="41" /> +<hkern u1="À" u2="Ô" k="41" /> +<hkern u1="À" u2="Ó" k="41" /> +<hkern u1="À" u2="Ò" k="41" /> +<hkern u1="À" u2="Ç" k="41" /> +<hkern u1="À" u2="Y" k="123" /> +<hkern u1="À" u2="W" k="82" /> +<hkern u1="À" u2="V" k="82" /> +<hkern u1="À" u2="T" k="143" /> +<hkern u1="À" u2="Q" k="41" /> +<hkern u1="À" u2="O" k="41" /> +<hkern u1="À" u2="J" k="-266" /> +<hkern u1="À" u2="G" k="41" /> +<hkern u1="À" u2="C" k="41" /> +<hkern u1="À" u2="'" k="143" /> +<hkern u1="À" u2=""" k="143" /> +<hkern u1="Á" u2="”" k="143" /> +<hkern u1="Á" u2="’" k="143" /> +<hkern u1="Á" u2="Ÿ" k="123" /> +<hkern u1="Á" u2="Œ" k="41" /> +<hkern u1="Á" u2="Ý" k="123" /> +<hkern u1="Á" u2="Ø" k="41" /> +<hkern u1="Á" u2="Ö" k="41" /> +<hkern u1="Á" u2="Õ" k="41" /> +<hkern u1="Á" u2="Ô" k="41" /> +<hkern u1="Á" u2="Ó" k="41" /> +<hkern u1="Á" u2="Ò" k="41" /> +<hkern u1="Á" u2="Ç" k="41" /> +<hkern u1="Á" u2="Y" k="123" /> +<hkern u1="Á" u2="W" k="82" /> +<hkern u1="Á" u2="V" k="82" /> +<hkern u1="Á" u2="T" k="143" /> +<hkern u1="Á" u2="Q" k="41" /> +<hkern u1="Á" u2="O" k="41" /> +<hkern u1="Á" u2="J" k="-266" /> +<hkern u1="Á" u2="G" k="41" /> +<hkern u1="Á" u2="C" k="41" /> +<hkern u1="Á" u2="'" k="143" /> +<hkern u1="Á" u2=""" k="143" /> +<hkern u1="Â" u2="”" k="143" /> +<hkern u1="Â" u2="’" k="143" /> +<hkern u1="Â" u2="Ÿ" k="123" /> +<hkern u1="Â" u2="Œ" k="41" /> +<hkern u1="Â" u2="Ý" k="123" /> +<hkern u1="Â" u2="Ø" k="41" /> +<hkern u1="Â" u2="Ö" k="41" /> +<hkern u1="Â" u2="Õ" k="41" /> +<hkern u1="Â" u2="Ô" k="41" /> +<hkern u1="Â" u2="Ó" k="41" /> +<hkern u1="Â" u2="Ò" k="41" /> +<hkern u1="Â" u2="Ç" k="41" /> +<hkern u1="Â" u2="Y" k="123" /> +<hkern u1="Â" u2="W" k="82" /> +<hkern u1="Â" u2="V" k="82" /> +<hkern u1="Â" u2="T" k="143" /> +<hkern u1="Â" u2="Q" k="41" /> +<hkern u1="Â" u2="O" k="41" /> +<hkern u1="Â" u2="J" k="-266" /> +<hkern u1="Â" u2="G" k="41" /> +<hkern u1="Â" u2="C" k="41" /> +<hkern u1="Â" u2="'" k="143" /> +<hkern u1="Â" u2=""" k="143" /> +<hkern u1="Ã" u2="”" k="143" /> +<hkern u1="Ã" u2="’" k="143" /> +<hkern u1="Ã" u2="Ÿ" k="123" /> +<hkern u1="Ã" u2="Œ" k="41" /> +<hkern u1="Ã" u2="Ý" k="123" /> +<hkern u1="Ã" u2="Ø" k="41" /> +<hkern u1="Ã" u2="Ö" k="41" /> +<hkern u1="Ã" u2="Õ" k="41" /> +<hkern u1="Ã" u2="Ô" k="41" /> +<hkern u1="Ã" u2="Ó" k="41" /> +<hkern u1="Ã" u2="Ò" k="41" /> +<hkern u1="Ã" u2="Ç" k="41" /> +<hkern u1="Ã" u2="Y" k="123" /> +<hkern u1="Ã" u2="W" k="82" /> +<hkern u1="Ã" u2="V" k="82" /> +<hkern u1="Ã" u2="T" k="143" /> +<hkern u1="Ã" u2="Q" k="41" /> +<hkern u1="Ã" u2="O" k="41" /> +<hkern u1="Ã" u2="J" k="-266" /> +<hkern u1="Ã" u2="G" k="41" /> +<hkern u1="Ã" u2="C" k="41" /> +<hkern u1="Ã" u2="'" k="143" /> +<hkern u1="Ã" u2=""" k="143" /> +<hkern u1="Ä" u2="”" k="143" /> +<hkern u1="Ä" u2="’" k="143" /> +<hkern u1="Ä" u2="Ÿ" k="123" /> +<hkern u1="Ä" u2="Œ" k="41" /> +<hkern u1="Ä" u2="Ý" k="123" /> +<hkern u1="Ä" u2="Ø" k="41" /> +<hkern u1="Ä" u2="Ö" k="41" /> +<hkern u1="Ä" u2="Õ" k="41" /> +<hkern u1="Ä" u2="Ô" k="41" /> +<hkern u1="Ä" u2="Ó" k="41" /> +<hkern u1="Ä" u2="Ò" k="41" /> +<hkern u1="Ä" u2="Ç" k="41" /> +<hkern u1="Ä" u2="Y" k="123" /> +<hkern u1="Ä" u2="W" k="82" /> +<hkern u1="Ä" u2="V" k="82" /> +<hkern u1="Ä" u2="T" k="143" /> +<hkern u1="Ä" u2="Q" k="41" /> +<hkern u1="Ä" u2="O" k="41" /> +<hkern u1="Ä" u2="J" k="-266" /> +<hkern u1="Ä" u2="G" k="41" /> +<hkern u1="Ä" u2="C" k="41" /> +<hkern u1="Ä" u2="'" k="143" /> +<hkern u1="Ä" u2=""" k="143" /> +<hkern u1="Å" u2="”" k="143" /> +<hkern u1="Å" u2="’" k="143" /> +<hkern u1="Å" u2="Ÿ" k="123" /> +<hkern u1="Å" u2="Œ" k="41" /> +<hkern u1="Å" u2="Ý" k="123" /> +<hkern u1="Å" u2="Ø" k="41" /> +<hkern u1="Å" u2="Ö" k="41" /> +<hkern u1="Å" u2="Õ" k="41" /> +<hkern u1="Å" u2="Ô" k="41" /> +<hkern u1="Å" u2="Ó" k="41" /> +<hkern u1="Å" u2="Ò" k="41" /> +<hkern u1="Å" u2="Ç" k="41" /> +<hkern u1="Å" u2="Y" k="123" /> +<hkern u1="Å" u2="W" k="82" /> +<hkern u1="Å" u2="V" k="82" /> +<hkern u1="Å" u2="T" k="143" /> +<hkern u1="Å" u2="Q" k="41" /> +<hkern u1="Å" u2="O" k="41" /> +<hkern u1="Å" u2="J" k="-266" /> +<hkern u1="Å" u2="G" k="41" /> +<hkern u1="Å" u2="C" k="41" /> +<hkern u1="Å" u2="'" k="143" /> +<hkern u1="Å" u2=""" k="143" /> +<hkern u1="Æ" u2="J" k="-123" /> +<hkern u1="Ç" u2="Œ" k="41" /> +<hkern u1="Ç" u2="Ø" k="41" /> +<hkern u1="Ç" u2="Ö" k="41" /> +<hkern u1="Ç" u2="Õ" k="41" /> +<hkern u1="Ç" u2="Ô" k="41" /> +<hkern u1="Ç" u2="Ó" k="41" /> +<hkern u1="Ç" u2="Ò" k="41" /> +<hkern u1="Ç" u2="Ç" k="41" /> +<hkern u1="Ç" u2="Q" k="41" /> +<hkern u1="Ç" u2="O" k="41" /> +<hkern u1="Ç" u2="G" k="41" /> +<hkern u1="Ç" u2="C" k="41" /> +<hkern u1="È" u2="J" k="-123" /> +<hkern u1="É" u2="J" k="-123" /> +<hkern u1="Ê" u2="J" k="-123" /> +<hkern u1="Ë" u2="J" k="-123" /> +<hkern u1="Ð" u2="„" k="82" /> +<hkern u1="Ð" u2="‚" k="82" /> +<hkern u1="Ð" u2="Ÿ" k="20" /> +<hkern u1="Ð" u2="Ý" k="20" /> +<hkern u1="Ð" u2="Å" k="41" /> +<hkern u1="Ð" u2="Ä" k="41" /> +<hkern u1="Ð" u2="Ã" k="41" /> +<hkern u1="Ð" u2="Â" k="41" /> +<hkern u1="Ð" u2="Á" k="41" /> +<hkern u1="Ð" u2="À" k="41" /> +<hkern u1="Ð" u2="Z" k="20" /> +<hkern u1="Ð" u2="Y" k="20" /> +<hkern u1="Ð" u2="X" k="41" /> +<hkern u1="Ð" u2="W" k="20" /> +<hkern u1="Ð" u2="V" k="20" /> +<hkern u1="Ð" u2="T" k="61" /> +<hkern u1="Ð" u2="A" k="41" /> +<hkern u1="Ð" u2="." k="82" /> +<hkern u1="Ð" u2="," k="82" /> +<hkern u1="Ò" u2="„" k="82" /> +<hkern u1="Ò" u2="‚" k="82" /> +<hkern u1="Ò" u2="Ÿ" k="20" /> +<hkern u1="Ò" u2="Ý" k="20" /> +<hkern u1="Ò" u2="Å" k="41" /> +<hkern u1="Ò" u2="Ä" k="41" /> +<hkern u1="Ò" u2="Ã" k="41" /> +<hkern u1="Ò" u2="Â" k="41" /> +<hkern u1="Ò" u2="Á" k="41" /> +<hkern u1="Ò" u2="À" k="41" /> +<hkern u1="Ò" u2="Z" k="20" /> +<hkern u1="Ò" u2="Y" k="20" /> +<hkern u1="Ò" u2="X" k="41" /> +<hkern u1="Ò" u2="W" k="20" /> +<hkern u1="Ò" u2="V" k="20" /> +<hkern u1="Ò" u2="T" k="61" /> +<hkern u1="Ò" u2="A" k="41" /> +<hkern u1="Ò" u2="." k="82" /> +<hkern u1="Ò" u2="," k="82" /> +<hkern u1="Ó" u2="„" k="82" /> +<hkern u1="Ó" u2="‚" k="82" /> +<hkern u1="Ó" u2="Ÿ" k="20" /> +<hkern u1="Ó" u2="Ý" k="20" /> +<hkern u1="Ó" u2="Å" k="41" /> +<hkern u1="Ó" u2="Ä" k="41" /> +<hkern u1="Ó" u2="Ã" k="41" /> +<hkern u1="Ó" u2="Â" k="41" /> +<hkern u1="Ó" u2="Á" k="41" /> +<hkern u1="Ó" u2="À" k="41" /> +<hkern u1="Ó" u2="Z" k="20" /> +<hkern u1="Ó" u2="Y" k="20" /> +<hkern u1="Ó" u2="X" k="41" /> +<hkern u1="Ó" u2="W" k="20" /> +<hkern u1="Ó" u2="V" k="20" /> +<hkern u1="Ó" u2="T" k="61" /> +<hkern u1="Ó" u2="A" k="41" /> +<hkern u1="Ó" u2="." k="82" /> +<hkern u1="Ó" u2="," k="82" /> +<hkern u1="Ô" u2="„" k="82" /> +<hkern u1="Ô" u2="‚" k="82" /> +<hkern u1="Ô" u2="Ÿ" k="20" /> +<hkern u1="Ô" u2="Ý" k="20" /> +<hkern u1="Ô" u2="Å" k="41" /> +<hkern u1="Ô" u2="Ä" k="41" /> +<hkern u1="Ô" u2="Ã" k="41" /> +<hkern u1="Ô" u2="Â" k="41" /> +<hkern u1="Ô" u2="Á" k="41" /> +<hkern u1="Ô" u2="À" k="41" /> +<hkern u1="Ô" u2="Z" k="20" /> +<hkern u1="Ô" u2="Y" k="20" /> +<hkern u1="Ô" u2="X" k="41" /> +<hkern u1="Ô" u2="W" k="20" /> +<hkern u1="Ô" u2="V" k="20" /> +<hkern u1="Ô" u2="T" k="61" /> +<hkern u1="Ô" u2="A" k="41" /> +<hkern u1="Ô" u2="." k="82" /> +<hkern u1="Ô" u2="," k="82" /> +<hkern u1="Õ" u2="„" k="82" /> +<hkern u1="Õ" u2="‚" k="82" /> +<hkern u1="Õ" u2="Ÿ" k="20" /> +<hkern u1="Õ" u2="Ý" k="20" /> +<hkern u1="Õ" u2="Å" k="41" /> +<hkern u1="Õ" u2="Ä" k="41" /> +<hkern u1="Õ" u2="Ã" k="41" /> +<hkern u1="Õ" u2="Â" k="41" /> +<hkern u1="Õ" u2="Á" k="41" /> +<hkern u1="Õ" u2="À" k="41" /> +<hkern u1="Õ" u2="Z" k="20" /> +<hkern u1="Õ" u2="Y" k="20" /> +<hkern u1="Õ" u2="X" k="41" /> +<hkern u1="Õ" u2="W" k="20" /> +<hkern u1="Õ" u2="V" k="20" /> +<hkern u1="Õ" u2="T" k="61" /> +<hkern u1="Õ" u2="A" k="41" /> +<hkern u1="Õ" u2="." k="82" /> +<hkern u1="Õ" u2="," k="82" /> +<hkern u1="Ö" u2="„" k="82" /> +<hkern u1="Ö" u2="‚" k="82" /> +<hkern u1="Ö" u2="Ÿ" k="20" /> +<hkern u1="Ö" u2="Ý" k="20" /> +<hkern u1="Ö" u2="Å" k="41" /> +<hkern u1="Ö" u2="Ä" k="41" /> +<hkern u1="Ö" u2="Ã" k="41" /> +<hkern u1="Ö" u2="Â" k="41" /> +<hkern u1="Ö" u2="Á" k="41" /> +<hkern u1="Ö" u2="À" k="41" /> +<hkern u1="Ö" u2="Z" k="20" /> +<hkern u1="Ö" u2="Y" k="20" /> +<hkern u1="Ö" u2="X" k="41" /> +<hkern u1="Ö" u2="W" k="20" /> +<hkern u1="Ö" u2="V" k="20" /> +<hkern u1="Ö" u2="T" k="61" /> +<hkern u1="Ö" u2="A" k="41" /> +<hkern u1="Ö" u2="." k="82" /> +<hkern u1="Ö" u2="," k="82" /> +<hkern u1="Ø" u2="„" k="82" /> +<hkern u1="Ø" u2="‚" k="82" /> +<hkern u1="Ø" u2="Ÿ" k="20" /> +<hkern u1="Ø" u2="Ý" k="20" /> +<hkern u1="Ø" u2="Å" k="41" /> +<hkern u1="Ø" u2="Ä" k="41" /> +<hkern u1="Ø" u2="Ã" k="41" /> +<hkern u1="Ø" u2="Â" k="41" /> +<hkern u1="Ø" u2="Á" k="41" /> +<hkern u1="Ø" u2="À" k="41" /> +<hkern u1="Ø" u2="Z" k="20" /> +<hkern u1="Ø" u2="Y" k="20" /> +<hkern u1="Ø" u2="X" k="41" /> +<hkern u1="Ø" u2="W" k="20" /> +<hkern u1="Ø" u2="V" k="20" /> +<hkern u1="Ø" u2="T" k="61" /> +<hkern u1="Ø" u2="A" k="41" /> +<hkern u1="Ø" u2="." k="82" /> +<hkern u1="Ø" u2="," k="82" /> +<hkern u1="Ù" u2="„" k="41" /> +<hkern u1="Ù" u2="‚" k="41" /> +<hkern u1="Ù" u2="Å" k="20" /> +<hkern u1="Ù" u2="Ä" k="20" /> +<hkern u1="Ù" u2="Ã" k="20" /> +<hkern u1="Ù" u2="Â" k="20" /> +<hkern u1="Ù" u2="Á" k="20" /> +<hkern u1="Ù" u2="À" k="20" /> +<hkern u1="Ù" u2="A" k="20" /> +<hkern u1="Ù" u2="." k="41" /> +<hkern u1="Ù" u2="," k="41" /> +<hkern u1="Ú" u2="„" k="41" /> +<hkern u1="Ú" u2="‚" k="41" /> +<hkern u1="Ú" u2="Å" k="20" /> +<hkern u1="Ú" u2="Ä" k="20" /> +<hkern u1="Ú" u2="Ã" k="20" /> +<hkern u1="Ú" u2="Â" k="20" /> +<hkern u1="Ú" u2="Á" k="20" /> +<hkern u1="Ú" u2="À" k="20" /> +<hkern u1="Ú" u2="A" k="20" /> +<hkern u1="Ú" u2="." k="41" /> +<hkern u1="Ú" u2="," k="41" /> +<hkern u1="Û" u2="„" k="41" /> +<hkern u1="Û" u2="‚" k="41" /> +<hkern u1="Û" u2="Å" k="20" /> +<hkern u1="Û" u2="Ä" k="20" /> +<hkern u1="Û" u2="Ã" k="20" /> +<hkern u1="Û" u2="Â" k="20" /> +<hkern u1="Û" u2="Á" k="20" /> +<hkern u1="Û" u2="À" k="20" /> +<hkern u1="Û" u2="A" k="20" /> +<hkern u1="Û" u2="." k="41" /> +<hkern u1="Û" u2="," k="41" /> +<hkern u1="Ü" u2="„" k="41" /> +<hkern u1="Ü" u2="‚" k="41" /> +<hkern u1="Ü" u2="Å" k="20" /> +<hkern u1="Ü" u2="Ä" k="20" /> +<hkern u1="Ü" u2="Ã" k="20" /> +<hkern u1="Ü" u2="Â" k="20" /> +<hkern u1="Ü" u2="Á" k="20" /> +<hkern u1="Ü" u2="À" k="20" /> +<hkern u1="Ü" u2="A" k="20" /> +<hkern u1="Ü" u2="." k="41" /> +<hkern u1="Ü" u2="," k="41" /> +<hkern u1="Ý" u2="„" k="123" /> +<hkern u1="Ý" u2="‚" k="123" /> +<hkern u1="Ý" u2="œ" k="102" /> +<hkern u1="Ý" u2="Œ" k="41" /> +<hkern u1="Ý" u2="ü" k="61" /> +<hkern u1="Ý" u2="û" k="61" /> +<hkern u1="Ý" u2="ú" k="61" /> +<hkern u1="Ý" u2="ù" k="61" /> +<hkern u1="Ý" u2="ø" k="102" /> +<hkern u1="Ý" u2="ö" k="102" /> +<hkern u1="Ý" u2="õ" k="102" /> +<hkern u1="Ý" u2="ô" k="102" /> +<hkern u1="Ý" u2="ó" k="102" /> +<hkern u1="Ý" u2="ò" k="102" /> +<hkern u1="Ý" u2="ë" k="102" /> +<hkern u1="Ý" u2="ê" k="102" /> +<hkern u1="Ý" u2="é" k="102" /> +<hkern u1="Ý" u2="è" k="102" /> +<hkern u1="Ý" u2="ç" k="102" /> +<hkern u1="Ý" u2="æ" k="102" /> +<hkern u1="Ý" u2="å" k="102" /> +<hkern u1="Ý" u2="ä" k="102" /> +<hkern u1="Ý" u2="ã" k="102" /> +<hkern u1="Ý" u2="â" k="102" /> +<hkern u1="Ý" u2="á" k="102" /> +<hkern u1="Ý" u2="à" k="102" /> +<hkern u1="Ý" u2="Ø" k="41" /> +<hkern u1="Ý" u2="Ö" k="41" /> +<hkern u1="Ý" u2="Õ" k="41" /> +<hkern u1="Ý" u2="Ô" k="41" /> +<hkern u1="Ý" u2="Ó" k="41" /> +<hkern u1="Ý" u2="Ò" k="41" /> +<hkern u1="Ý" u2="Ç" k="41" /> +<hkern u1="Ý" u2="Å" k="123" /> +<hkern u1="Ý" u2="Ä" k="123" /> +<hkern u1="Ý" u2="Ã" k="123" /> +<hkern u1="Ý" u2="Â" k="123" /> +<hkern u1="Ý" u2="Á" k="123" /> +<hkern u1="Ý" u2="À" k="123" /> +<hkern u1="Ý" u2="z" k="41" /> +<hkern u1="Ý" u2="u" k="61" /> +<hkern u1="Ý" u2="s" k="82" /> +<hkern u1="Ý" u2="r" k="61" /> +<hkern u1="Ý" u2="q" k="102" /> +<hkern u1="Ý" u2="p" k="61" /> +<hkern u1="Ý" u2="o" k="102" /> +<hkern u1="Ý" u2="n" k="61" /> +<hkern u1="Ý" u2="m" k="61" /> +<hkern u1="Ý" u2="g" k="41" /> +<hkern u1="Ý" u2="e" k="102" /> +<hkern u1="Ý" u2="d" k="102" /> +<hkern u1="Ý" u2="c" k="102" /> +<hkern u1="Ý" u2="a" k="102" /> +<hkern u1="Ý" u2="Q" k="41" /> +<hkern u1="Ý" u2="O" k="41" /> +<hkern u1="Ý" u2="G" k="41" /> +<hkern u1="Ý" u2="C" k="41" /> +<hkern u1="Ý" u2="A" k="123" /> +<hkern u1="Ý" u2="?" k="-41" /> +<hkern u1="Ý" u2="." k="123" /> +<hkern u1="Ý" u2="," k="123" /> +<hkern u1="Þ" u2="„" k="266" /> +<hkern u1="Þ" u2="‚" k="266" /> +<hkern u1="Þ" u2="Å" k="102" /> +<hkern u1="Þ" u2="Ä" k="102" /> +<hkern u1="Þ" u2="Ã" k="102" /> +<hkern u1="Þ" u2="Â" k="102" /> +<hkern u1="Þ" u2="Á" k="102" /> +<hkern u1="Þ" u2="À" k="102" /> +<hkern u1="Þ" u2="Z" k="20" /> +<hkern u1="Þ" u2="X" k="41" /> +<hkern u1="Þ" u2="A" k="102" /> +<hkern u1="Þ" u2="." k="266" /> +<hkern u1="Þ" u2="," k="266" /> +<hkern u1="à" u2="”" k="20" /> +<hkern u1="à" u2="’" k="20" /> +<hkern u1="à" u2="'" k="20" /> +<hkern u1="à" u2=""" k="20" /> +<hkern u1="á" u2="”" k="20" /> +<hkern u1="á" u2="’" k="20" /> +<hkern u1="á" u2="'" k="20" /> +<hkern u1="á" u2=""" k="20" /> +<hkern u1="â" u2="”" k="20" /> +<hkern u1="â" u2="’" k="20" /> +<hkern u1="â" u2="'" k="20" /> +<hkern u1="â" u2=""" k="20" /> +<hkern u1="ã" u2="”" k="20" /> +<hkern u1="ã" u2="’" k="20" /> +<hkern u1="ã" u2="'" k="20" /> +<hkern u1="ã" u2=""" k="20" /> +<hkern u1="ä" u2="”" k="20" /> +<hkern u1="ä" u2="’" k="20" /> +<hkern u1="ä" u2="'" k="20" /> +<hkern u1="ä" u2=""" k="20" /> +<hkern u1="å" u2="”" k="20" /> +<hkern u1="å" u2="’" k="20" /> +<hkern u1="å" u2="'" k="20" /> +<hkern u1="å" u2=""" k="20" /> +<hkern u1="è" u2="”" k="20" /> +<hkern u1="è" u2="’" k="20" /> +<hkern u1="è" u2="ý" k="41" /> +<hkern u1="è" u2="z" k="20" /> +<hkern u1="è" u2="y" k="41" /> +<hkern u1="è" u2="x" k="41" /> +<hkern u1="è" u2="w" k="41" /> +<hkern u1="è" u2="v" k="41" /> +<hkern u1="è" u2="'" k="20" /> +<hkern u1="è" u2=""" k="20" /> +<hkern u1="é" u2="”" k="20" /> +<hkern u1="é" u2="’" k="20" /> +<hkern u1="é" u2="ý" k="41" /> +<hkern u1="é" u2="z" k="20" /> +<hkern u1="é" u2="y" k="41" /> +<hkern u1="é" u2="x" k="41" /> +<hkern u1="é" u2="w" k="41" /> +<hkern u1="é" u2="v" k="41" /> +<hkern u1="é" u2="'" k="20" /> +<hkern u1="é" u2=""" k="20" /> +<hkern u1="ê" u2="”" k="20" /> +<hkern u1="ê" u2="’" k="20" /> +<hkern u1="ê" u2="ý" k="41" /> +<hkern u1="ê" u2="z" k="20" /> +<hkern u1="ê" u2="y" k="41" /> +<hkern u1="ê" u2="x" k="41" /> +<hkern u1="ê" u2="w" k="41" /> +<hkern u1="ê" u2="v" k="41" /> +<hkern u1="ê" u2="'" k="20" /> +<hkern u1="ê" u2=""" k="20" /> +<hkern u1="ë" u2="”" k="20" /> +<hkern u1="ë" u2="’" k="20" /> +<hkern u1="ë" u2="ý" k="41" /> +<hkern u1="ë" u2="z" k="20" /> +<hkern u1="ë" u2="y" k="41" /> +<hkern u1="ë" u2="x" k="41" /> +<hkern u1="ë" u2="w" k="41" /> +<hkern u1="ë" u2="v" k="41" /> +<hkern u1="ë" u2="'" k="20" /> +<hkern u1="ë" u2=""" k="20" /> +<hkern u1="ð" u2="”" k="20" /> +<hkern u1="ð" u2="’" k="20" /> +<hkern u1="ð" u2="ý" k="41" /> +<hkern u1="ð" u2="z" k="20" /> +<hkern u1="ð" u2="y" k="41" /> +<hkern u1="ð" u2="x" k="41" /> +<hkern u1="ð" u2="w" k="41" /> +<hkern u1="ð" u2="v" k="41" /> +<hkern u1="ð" u2="'" k="20" /> +<hkern u1="ð" u2=""" k="20" /> +<hkern u1="ò" u2="”" k="20" /> +<hkern u1="ò" u2="’" k="20" /> +<hkern u1="ò" u2="ý" k="41" /> +<hkern u1="ò" u2="z" k="20" /> +<hkern u1="ò" u2="y" k="41" /> +<hkern u1="ò" u2="x" k="41" /> +<hkern u1="ò" u2="w" k="41" /> +<hkern u1="ò" u2="v" k="41" /> +<hkern u1="ò" u2="'" k="20" /> +<hkern u1="ò" u2=""" k="20" /> +<hkern u1="ó" u2="”" k="20" /> +<hkern u1="ó" u2="’" k="20" /> +<hkern u1="ó" u2="ý" k="41" /> +<hkern u1="ó" u2="z" k="20" /> +<hkern u1="ó" u2="y" k="41" /> +<hkern u1="ó" u2="x" k="41" /> +<hkern u1="ó" u2="w" k="41" /> +<hkern u1="ó" u2="v" k="41" /> +<hkern u1="ó" u2="'" k="20" /> +<hkern u1="ó" u2=""" k="20" /> +<hkern u1="ô" u2="”" k="20" /> +<hkern u1="ô" u2="’" k="20" /> +<hkern u1="ô" u2="ý" k="41" /> +<hkern u1="ô" u2="z" k="20" /> +<hkern u1="ô" u2="y" k="41" /> +<hkern u1="ô" u2="x" k="41" /> +<hkern u1="ô" u2="w" k="41" /> +<hkern u1="ô" u2="v" k="41" /> +<hkern u1="ô" u2="'" k="20" /> +<hkern u1="ô" u2=""" k="20" /> +<hkern u1="ö" u2="”" k="41" /> +<hkern u1="ö" u2="’" k="41" /> +<hkern u1="ö" u2="'" k="41" /> +<hkern u1="ö" u2=""" k="41" /> +<hkern u1="ø" u2="”" k="20" /> +<hkern u1="ø" u2="’" k="20" /> +<hkern u1="ø" u2="ý" k="41" /> +<hkern u1="ø" u2="z" k="20" /> +<hkern u1="ø" u2="y" k="41" /> +<hkern u1="ø" u2="x" k="41" /> +<hkern u1="ø" u2="w" k="41" /> +<hkern u1="ø" u2="v" k="41" /> +<hkern u1="ø" u2="'" k="20" /> +<hkern u1="ø" u2=""" k="20" /> +<hkern u1="ý" u2="„" k="82" /> +<hkern u1="ý" u2="”" k="-82" /> +<hkern u1="ý" u2="‚" k="82" /> +<hkern u1="ý" u2="’" k="-82" /> +<hkern u1="ý" u2="?" k="-41" /> +<hkern u1="ý" u2="." k="82" /> +<hkern u1="ý" u2="," k="82" /> +<hkern u1="ý" u2="'" k="-82" /> +<hkern u1="ý" u2=""" k="-82" /> +<hkern u1="þ" u2="”" k="20" /> +<hkern u1="þ" u2="’" k="20" /> +<hkern u1="þ" u2="ý" k="41" /> +<hkern u1="þ" u2="z" k="20" /> +<hkern u1="þ" u2="y" k="41" /> +<hkern u1="þ" u2="x" k="41" /> +<hkern u1="þ" u2="w" k="41" /> +<hkern u1="þ" u2="v" k="41" /> +<hkern u1="þ" u2="'" k="20" /> +<hkern u1="þ" u2=""" k="20" /> +<hkern u1="ÿ" u2="„" k="82" /> +<hkern u1="ÿ" u2="”" k="-82" /> +<hkern u1="ÿ" u2="‚" k="82" /> +<hkern u1="ÿ" u2="’" k="-82" /> +<hkern u1="ÿ" u2="?" k="-41" /> +<hkern u1="ÿ" u2="." k="82" /> +<hkern u1="ÿ" u2="," k="82" /> +<hkern u1="ÿ" u2="'" k="-82" /> +<hkern u1="ÿ" u2=""" k="-82" /> +<hkern u1="Œ" u2="J" k="-123" /> +<hkern u1="Ÿ" u2="„" k="123" /> +<hkern u1="Ÿ" u2="‚" k="123" /> +<hkern u1="Ÿ" u2="œ" k="102" /> +<hkern u1="Ÿ" u2="Œ" k="41" /> +<hkern u1="Ÿ" u2="ü" k="61" /> +<hkern u1="Ÿ" u2="û" k="61" /> +<hkern u1="Ÿ" u2="ú" k="61" /> +<hkern u1="Ÿ" u2="ù" k="61" /> +<hkern u1="Ÿ" u2="ø" k="102" /> +<hkern u1="Ÿ" u2="ö" k="102" /> +<hkern u1="Ÿ" u2="õ" k="102" /> +<hkern u1="Ÿ" u2="ô" k="102" /> +<hkern u1="Ÿ" u2="ó" k="102" /> +<hkern u1="Ÿ" u2="ò" k="102" /> +<hkern u1="Ÿ" u2="ë" k="102" /> +<hkern u1="Ÿ" u2="ê" k="102" /> +<hkern u1="Ÿ" u2="é" k="102" /> +<hkern u1="Ÿ" u2="è" k="102" /> +<hkern u1="Ÿ" u2="ç" k="102" /> +<hkern u1="Ÿ" u2="æ" k="102" /> +<hkern u1="Ÿ" u2="å" k="102" /> +<hkern u1="Ÿ" u2="ä" k="102" /> +<hkern u1="Ÿ" u2="ã" k="102" /> +<hkern u1="Ÿ" u2="â" k="102" /> +<hkern u1="Ÿ" u2="á" k="102" /> +<hkern u1="Ÿ" u2="à" k="102" /> +<hkern u1="Ÿ" u2="Ø" k="41" /> +<hkern u1="Ÿ" u2="Ö" k="41" /> +<hkern u1="Ÿ" u2="Õ" k="41" /> +<hkern u1="Ÿ" u2="Ô" k="41" /> +<hkern u1="Ÿ" u2="Ó" k="41" /> +<hkern u1="Ÿ" u2="Ò" k="41" /> +<hkern u1="Ÿ" u2="Ç" k="41" /> +<hkern u1="Ÿ" u2="Å" k="123" /> +<hkern u1="Ÿ" u2="Ä" k="123" /> +<hkern u1="Ÿ" u2="Ã" k="123" /> +<hkern u1="Ÿ" u2="Â" k="123" /> +<hkern u1="Ÿ" u2="Á" k="123" /> +<hkern u1="Ÿ" u2="À" k="123" /> +<hkern u1="Ÿ" u2="z" k="41" /> +<hkern u1="Ÿ" u2="u" k="61" /> +<hkern u1="Ÿ" u2="s" k="82" /> +<hkern u1="Ÿ" u2="r" k="61" /> +<hkern u1="Ÿ" u2="q" k="102" /> +<hkern u1="Ÿ" u2="p" k="61" /> +<hkern u1="Ÿ" u2="o" k="102" /> +<hkern u1="Ÿ" u2="n" k="61" /> +<hkern u1="Ÿ" u2="m" k="61" /> +<hkern u1="Ÿ" u2="g" k="41" /> +<hkern u1="Ÿ" u2="e" k="102" /> +<hkern u1="Ÿ" u2="d" k="102" /> +<hkern u1="Ÿ" u2="c" k="102" /> +<hkern u1="Ÿ" u2="a" k="102" /> +<hkern u1="Ÿ" u2="Q" k="41" /> +<hkern u1="Ÿ" u2="O" k="41" /> +<hkern u1="Ÿ" u2="G" k="41" /> +<hkern u1="Ÿ" u2="C" k="41" /> +<hkern u1="Ÿ" u2="A" k="123" /> +<hkern u1="Ÿ" u2="?" k="-41" /> +<hkern u1="Ÿ" u2="." k="123" /> +<hkern u1="Ÿ" u2="," k="123" /> +<hkern u1="–" u2="T" k="82" /> +<hkern u1="—" u2="T" k="82" /> +<hkern u1="‘" u2="Ÿ" k="-20" /> +<hkern u1="‘" u2="œ" k="123" /> +<hkern u1="‘" u2="ü" k="61" /> +<hkern u1="‘" u2="û" k="61" /> +<hkern u1="‘" u2="ú" k="61" /> +<hkern u1="‘" u2="ù" k="61" /> +<hkern u1="‘" u2="ø" k="123" /> +<hkern u1="‘" u2="ö" k="123" /> +<hkern u1="‘" u2="õ" k="123" /> +<hkern u1="‘" u2="ô" k="123" /> +<hkern u1="‘" u2="ó" k="123" /> +<hkern u1="‘" u2="ò" k="123" /> +<hkern u1="‘" u2="ë" k="123" /> +<hkern u1="‘" u2="ê" k="123" /> +<hkern u1="‘" u2="é" k="123" /> +<hkern u1="‘" u2="è" k="123" /> +<hkern u1="‘" u2="ç" k="123" /> +<hkern u1="‘" u2="æ" k="82" /> +<hkern u1="‘" u2="å" k="82" /> +<hkern u1="‘" u2="ä" k="82" /> +<hkern u1="‘" u2="ã" k="82" /> +<hkern u1="‘" u2="â" k="82" /> +<hkern u1="‘" u2="á" k="82" /> +<hkern u1="‘" u2="à" k="123" /> +<hkern u1="‘" u2="Ý" k="-20" /> +<hkern u1="‘" u2="Å" k="143" /> +<hkern u1="‘" u2="Ä" k="143" /> +<hkern u1="‘" u2="Ã" k="143" /> +<hkern u1="‘" u2="Â" k="143" /> +<hkern u1="‘" u2="Á" k="143" /> +<hkern u1="‘" u2="À" k="143" /> +<hkern u1="‘" u2="u" k="61" /> +<hkern u1="‘" u2="s" k="61" /> +<hkern u1="‘" u2="r" k="61" /> +<hkern u1="‘" u2="q" k="123" /> +<hkern u1="‘" u2="p" k="61" /> +<hkern u1="‘" u2="o" k="123" /> +<hkern u1="‘" u2="n" k="61" /> +<hkern u1="‘" u2="m" k="61" /> +<hkern u1="‘" u2="g" k="61" /> +<hkern u1="‘" u2="e" k="123" /> +<hkern u1="‘" u2="d" k="123" /> +<hkern u1="‘" u2="c" k="123" /> +<hkern u1="‘" u2="a" k="82" /> +<hkern u1="‘" u2="Y" k="-20" /> +<hkern u1="‘" u2="W" k="-41" /> +<hkern u1="‘" u2="V" k="-41" /> +<hkern u1="‘" u2="T" k="-41" /> +<hkern u1="‘" u2="A" k="143" /> +<hkern u1="’" u2="Ÿ" k="-20" /> +<hkern u1="’" u2="œ" k="123" /> +<hkern u1="’" u2="ü" k="61" /> +<hkern u1="’" u2="û" k="61" /> +<hkern u1="’" u2="ú" k="61" /> +<hkern u1="’" u2="ù" k="61" /> +<hkern u1="’" u2="ø" k="123" /> +<hkern u1="’" u2="ö" k="123" /> +<hkern u1="’" u2="õ" k="123" /> +<hkern u1="’" u2="ô" k="123" /> +<hkern u1="’" u2="ó" k="123" /> +<hkern u1="’" u2="ò" k="123" /> +<hkern u1="’" u2="ë" k="123" /> +<hkern u1="’" u2="ê" k="123" /> +<hkern u1="’" u2="é" k="123" /> +<hkern u1="’" u2="è" k="123" /> +<hkern u1="’" u2="ç" k="123" /> +<hkern u1="’" u2="æ" k="82" /> +<hkern u1="’" u2="å" k="82" /> +<hkern u1="’" u2="ä" k="82" /> +<hkern u1="’" u2="ã" k="82" /> +<hkern u1="’" u2="â" k="82" /> +<hkern u1="’" u2="á" k="82" /> +<hkern u1="’" u2="à" k="123" /> +<hkern u1="’" u2="Ý" k="-20" /> +<hkern u1="’" u2="Å" k="143" /> +<hkern u1="’" u2="Ä" k="143" /> +<hkern u1="’" u2="Ã" k="143" /> +<hkern u1="’" u2="Â" k="143" /> +<hkern u1="’" u2="Á" k="143" /> +<hkern u1="’" u2="À" k="143" /> +<hkern u1="’" u2="u" k="61" /> +<hkern u1="’" u2="s" k="61" /> +<hkern u1="’" u2="r" k="61" /> +<hkern u1="’" u2="q" k="123" /> +<hkern u1="’" u2="p" k="61" /> +<hkern u1="’" u2="o" k="123" /> +<hkern u1="’" u2="n" k="61" /> +<hkern u1="’" u2="m" k="61" /> +<hkern u1="’" u2="g" k="61" /> +<hkern u1="’" u2="e" k="123" /> +<hkern u1="’" u2="d" k="123" /> +<hkern u1="’" u2="c" k="123" /> +<hkern u1="’" u2="a" k="82" /> +<hkern u1="’" u2="Y" k="-20" /> +<hkern u1="’" u2="W" k="-41" /> +<hkern u1="’" u2="V" k="-41" /> +<hkern u1="’" u2="T" k="-41" /> +<hkern u1="’" u2="A" k="143" /> +<hkern u1="‚" u2="Ÿ" k="123" /> +<hkern u1="‚" u2="Œ" k="102" /> +<hkern u1="‚" u2="Ý" k="123" /> +<hkern u1="‚" u2="Ü" k="41" /> +<hkern u1="‚" u2="Û" k="41" /> +<hkern u1="‚" u2="Ú" k="41" /> +<hkern u1="‚" u2="Ù" k="41" /> +<hkern u1="‚" u2="Ø" k="102" /> +<hkern u1="‚" u2="Ö" k="102" /> +<hkern u1="‚" u2="Õ" k="102" /> +<hkern u1="‚" u2="Ô" k="102" /> +<hkern u1="‚" u2="Ó" k="102" /> +<hkern u1="‚" u2="Ò" k="102" /> +<hkern u1="‚" u2="Ç" k="102" /> +<hkern u1="‚" u2="Y" k="123" /> +<hkern u1="‚" u2="W" k="123" /> +<hkern u1="‚" u2="V" k="123" /> +<hkern u1="‚" u2="U" k="41" /> +<hkern u1="‚" u2="T" k="143" /> +<hkern u1="‚" u2="Q" k="102" /> +<hkern u1="‚" u2="O" k="102" /> +<hkern u1="‚" u2="G" k="102" /> +<hkern u1="‚" u2="C" k="102" /> +<hkern u1="“" u2="Ÿ" k="-20" /> +<hkern u1="“" u2="œ" k="123" /> +<hkern u1="“" u2="ü" k="61" /> +<hkern u1="“" u2="û" k="61" /> +<hkern u1="“" u2="ú" k="61" /> +<hkern u1="“" u2="ù" k="61" /> +<hkern u1="“" u2="ø" k="123" /> +<hkern u1="“" u2="ö" k="123" /> +<hkern u1="“" u2="õ" k="123" /> +<hkern u1="“" u2="ô" k="123" /> +<hkern u1="“" u2="ó" k="123" /> +<hkern u1="“" u2="ò" k="123" /> +<hkern u1="“" u2="ë" k="123" /> +<hkern u1="“" u2="ê" k="123" /> +<hkern u1="“" u2="é" k="123" /> +<hkern u1="“" u2="è" k="123" /> +<hkern u1="“" u2="ç" k="123" /> +<hkern u1="“" u2="æ" k="82" /> +<hkern u1="“" u2="å" k="82" /> +<hkern u1="“" u2="ä" k="82" /> +<hkern u1="“" u2="ã" k="82" /> +<hkern u1="“" u2="â" k="82" /> +<hkern u1="“" u2="á" k="82" /> +<hkern u1="“" u2="à" k="123" /> +<hkern u1="“" u2="Ý" k="-20" /> +<hkern u1="“" u2="Å" k="143" /> +<hkern u1="“" u2="Ä" k="143" /> +<hkern u1="“" u2="Ã" k="143" /> +<hkern u1="“" u2="Â" k="143" /> +<hkern u1="“" u2="Á" k="143" /> +<hkern u1="“" u2="À" k="143" /> +<hkern u1="“" u2="u" k="61" /> +<hkern u1="“" u2="s" k="61" /> +<hkern u1="“" u2="r" k="61" /> +<hkern u1="“" u2="q" k="123" /> +<hkern u1="“" u2="p" k="61" /> +<hkern u1="“" u2="o" k="123" /> +<hkern u1="“" u2="n" k="61" /> +<hkern u1="“" u2="m" k="61" /> +<hkern u1="“" u2="g" k="61" /> +<hkern u1="“" u2="e" k="123" /> +<hkern u1="“" u2="d" k="123" /> +<hkern u1="“" u2="c" k="123" /> +<hkern u1="“" u2="a" k="82" /> +<hkern u1="“" u2="Y" k="-20" /> +<hkern u1="“" u2="W" k="-41" /> +<hkern u1="“" u2="V" k="-41" /> +<hkern u1="“" u2="T" k="-41" /> +<hkern u1="“" u2="A" k="143" /> +<hkern u1="„" u2="Ÿ" k="123" /> +<hkern u1="„" u2="Œ" k="102" /> +<hkern u1="„" u2="Ý" k="123" /> +<hkern u1="„" u2="Ü" k="41" /> +<hkern u1="„" u2="Û" k="41" /> +<hkern u1="„" u2="Ú" k="41" /> +<hkern u1="„" u2="Ù" k="41" /> +<hkern u1="„" u2="Ø" k="102" /> +<hkern u1="„" u2="Ö" k="102" /> +<hkern u1="„" u2="Õ" k="102" /> +<hkern u1="„" u2="Ô" k="102" /> +<hkern u1="„" u2="Ó" k="102" /> +<hkern u1="„" u2="Ò" k="102" /> +<hkern u1="„" u2="Ç" k="102" /> +<hkern u1="„" u2="Y" k="123" /> +<hkern u1="„" u2="W" k="123" /> +<hkern u1="„" u2="V" k="123" /> +<hkern u1="„" u2="U" k="41" /> +<hkern u1="„" u2="T" k="143" /> +<hkern u1="„" u2="Q" k="102" /> +<hkern u1="„" u2="O" k="102" /> +<hkern u1="„" u2="G" k="102" /> +<hkern u1="„" u2="C" k="102" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.woff b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000..e786074 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Light-webfont.woff Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.eot b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000..8f44592 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.eot Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.svg b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 0000000..431d7e3 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="open_sanslight_italic" horiz-adv-x="1128" > +<font-face units-per-em="2048" ascent="1638" descent="-410" /> +<missing-glyph horiz-adv-x="532" /> +<glyph unicode="ff" horiz-adv-x="1155" d="M-131 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76q73 0 166 -31 l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" /> +<glyph unicode="fi" horiz-adv-x="1040" d="M0 0zM739 0h-98l231 1087h96zM915 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31 l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" /> +<glyph unicode="fl" horiz-adv-x="1042" d="M0 0zM737 0h-94l334 1556h94zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248 l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" /> +<glyph unicode="ffi" horiz-adv-x="1616" d="M0 0zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76 q73 0 166 -31l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z M1315 0h-98l231 1087h96zM1491 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" /> +<glyph unicode="ffl" horiz-adv-x="1626" d="M0 0zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76 q73 0 166 -31l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z M1321 0h-94l334 1556h94z" /> +<glyph horiz-adv-x="2048" /> +<glyph horiz-adv-x="2048" /> +<glyph unicode="
" horiz-adv-x="1044" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="	" horiz-adv-x="532" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="!" horiz-adv-x="502" d="M248 377h-62l203 1085h119zM80 57q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-68 -34.5q-67 0 -67 73z" /> +<glyph unicode=""" horiz-adv-x="721" d="M455 1462l-146 -528h-61l80 528h127zM784 1462l-145 -528h-61l79 528h127z" /> +<glyph unicode="#" horiz-adv-x="1323" d="M389 530l119 398h-297l8 80h311l134 454h90l-136 -454h365l135 454h86l-135 -454h285l-8 -80h-302l-118 -398h303l-8 -79h-320l-133 -451h-90l135 451h-360l-134 -451h-88l134 451h-283l8 79h299zM475 530h363l120 398h-362z" /> +<glyph unicode="$" d="M928 467q0 -151 -110.5 -243t-297.5 -103l-53 -240h-82l51 240q-79 2 -158 18t-137 43v94q65 -34 153.5 -53.5t160.5 -19.5l110 512q-110 53 -153 91t-66.5 87.5t-23.5 116.5q0 155 105.5 250.5t272.5 99.5l41 192h80l-41 -192q149 -5 277 -68l-35 -78q-110 61 -256 70 l-109 -514q124 -60 172.5 -99.5t73.5 -88.5t25 -115zM537 203q142 7 223.5 74.5t81.5 183.5q0 76 -48 129.5t-157 97.5zM686 1284q-134 -9 -205 -80t-71 -186q0 -78 37 -128.5t137 -96.5z" /> +<glyph unicode="%" horiz-adv-x="1556" d="M1458 1462l-1139 -1462h-106l1135 1462h110zM1520 612q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5q0 160 52 312t138 229.5t193 77.5q121 0 176.5 -71.5t55.5 -211.5zM1284 821q-80 0 -146.5 -72.5t-106.5 -202.5t-40 -263q0 -116 41 -174t113 -58 q130 0 209.5 166.5t79.5 386.5q0 109 -36 163t-114 54zM760 1198q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5q0 160 52 312t138 229.5t193 77.5q232 0 232 -283zM524 1407q-79 0 -145 -71.5t-107 -203t-41 -264.5q0 -115 41 -173t113 -58 q84 0 148.5 72t102.5 204t38 277q0 109 -36 163t-114 54z" /> +<glyph unicode="&" horiz-adv-x="1331" d="M748 1395q-125 0 -194 -68t-69 -192q0 -132 109 -281q203 89 279.5 163.5t76.5 182.5q0 91 -56.5 143t-145.5 52zM465 63q108 0 211.5 42.5t222.5 146.5l-352 493q-164 -79 -232 -134.5t-103.5 -124t-35.5 -158.5q0 -119 78 -192t211 -73zM78 324q0 162 99 277.5 t325 215.5l-41 67q-78 128 -78 251q0 157 101 253.5t264 96.5q145 0 227 -76.5t82 -206.5q0 -85 -41 -154t-121 -128t-256 -138l330 -463q73 75 135.5 176.5t91.5 186.5h111q-102 -247 -285 -436l184 -246h-123l-131 184q-121 -108 -242 -156t-266 -48q-167 0 -266.5 94 t-99.5 250z" /> +<glyph unicode="'" horiz-adv-x="403" d="M461 1462l-146 -528h-61l80 528h127z" /> +<glyph unicode="(" horiz-adv-x="526" d="M104 270q0 343 122 633t382 559h105q-259 -276 -384.5 -568t-125.5 -618q0 -317 127 -600h-80q-146 262 -146 594z" /> +<glyph unicode=")" horiz-adv-x="526" d="M453 868q0 -345 -123.5 -636t-380.5 -556h-105q257 274 383.5 566.5t126.5 619.5q0 148 -28.5 294t-98.5 306h80q146 -262 146 -594z" /> +<glyph unicode="*" horiz-adv-x="1137" d="M834 1540l-109 -405l438 8l-8 -107l-416 29l181 -401l-115 -37l-135 417l-285 -348l-78 78l318 318l-392 125l39 102l394 -168l47 408z" /> +<glyph unicode="+" d="M563 672h-401v100h401v404h101v-404h401v-100h-401v-400h-101v400z" /> +<glyph unicode="," horiz-adv-x="451" d="M250 238l8 -23q-34 -92 -114 -233.5t-160 -245.5h-74q79 132 141 271t88 231h111z" /> +<glyph unicode="-" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" /> +<glyph unicode="." horiz-adv-x="485" d="M82 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" /> +<glyph unicode="/" horiz-adv-x="641" d="M827 1462l-817 -1462h-110l815 1462h112z" /> +<glyph unicode="0" d="M1075 1016q0 -201 -41 -405t-116.5 -346t-183.5 -213.5t-242 -71.5q-176 0 -264.5 126.5t-88.5 387.5q0 186 44.5 381.5t124 334t187 207t240.5 68.5q340 0 340 -469zM723 1397q-134 0 -241.5 -113t-173.5 -329t-66 -451q0 -222 62.5 -329t197.5 -107q139 0 244 112 t166 337t61 489q0 199 -59.5 295t-190.5 96z" /> +<glyph unicode="1" d="M537 0h-105l225 1055q19 92 74 293q-42 -36 -75.5 -61t-249.5 -161l-52 78l406 258h90z" /> +<glyph unicode="2" d="M909 0h-870l22 104l449 402q198 177 284 276.5t126.5 186.5t40.5 180q0 112 -66 178t-197 66q-176 0 -333 -129l-54 73q180 146 394 146q173 0 268.5 -85t95.5 -237q0 -110 -43.5 -208.5t-141.5 -211.5t-311 -303l-383 -338v-4h736z" /> +<glyph unicode="3" d="M1049 1174q0 -162 -106 -275t-286 -143v-4q117 -24 185.5 -115.5t68.5 -226.5q0 -134 -64 -233t-179.5 -148t-274.5 -49q-96 0 -184.5 20.5t-153.5 52.5v101q172 -86 344 -86q197 0 303.5 89.5t106.5 252.5q0 145 -89 223t-247 78h-117l21 96h110q209 0 333 95.5 t124 258.5q0 114 -63.5 175t-188.5 61q-167 0 -344 -131l-49 75q84 67 188 104.5t218 37.5q161 0 252.5 -82.5t91.5 -226.5z" /> +<glyph unicode="4" d="M1071 371h-264l-80 -371h-96l80 371h-688l20 96l881 1010h118l-215 -1018h265zM729 459q79 369 119 558.5t86 354.5h-4q-66 -91 -129 -166l-651 -747h579z" /> +<glyph unicode="5" d="M582 879q188 0 292.5 -102t104.5 -279q0 -237 -148 -377.5t-407 -140.5q-84 0 -177.5 20t-158.5 51v107q170 -90 340 -90q208 0 328.5 114.5t120.5 313.5q0 140 -85 219.5t-225 79.5q-133 0 -243 -41l-66 49l193 659h624l-18 -96h-541l-149 -516q98 29 215 29z" /> +<glyph unicode="6" d="M170 428q0 283 105 544.5t269.5 385t383.5 123.5q123 0 182 -21l-18 -90q-86 23 -170 23q-233 0 -393.5 -174t-233.5 -502h8q68 94 164 143t211 49q161 0 250.5 -100.5t89.5 -282.5q0 -156 -60 -281t-171 -195t-257 -70q-171 0 -265.5 119t-94.5 329zM543 68 q112 0 196.5 58.5t130 162t45.5 229.5q0 146 -67 224.5t-195 78.5q-81 0 -154 -31.5t-129 -87t-78 -115t-22 -173.5q0 -164 72.5 -255t200.5 -91z" /> +<glyph unicode="7" d="M244 0l796 1366h-766l23 96h858l-20 -110l-779 -1352h-112z" /> +<glyph unicode="8" d="M737 1485q163 0 258 -85t95 -229q0 -138 -84 -234.5t-285 -172.5q130 -78 190 -170.5t60 -208.5t-58 -208t-165.5 -144.5t-260.5 -52.5q-178 0 -283.5 92.5t-105.5 253.5q0 159 100.5 268.5t321.5 187.5q-100 72 -144 152t-44 180q0 159 114 265t291 106zM610 733 q-218 -73 -313.5 -167.5t-95.5 -225.5q0 -136 77.5 -206.5t219.5 -70.5q168 0 270 91t102 233q0 104 -62 189t-198 157zM727 1399q-130 0 -214.5 -82t-84.5 -203q0 -91 41.5 -159t157.5 -142q192 62 279 144t87 206q0 109 -70.5 172.5t-195.5 63.5z" /> +<glyph unicode="9" d="M1059 1032q0 -288 -101.5 -548t-263.5 -382t-393 -122q-114 0 -186 22v90q87 -29 192 -29q474 0 627 674h-8q-140 -192 -367 -192q-162 0 -255 105t-93 284q0 155 59.5 281t170.5 196t257 70q174 0 267.5 -115.5t93.5 -333.5zM686 1393q-112 0 -197.5 -58.5 t-130.5 -162.5t-45 -230q0 -145 67.5 -225t192.5 -80q83 0 157.5 32.5t129 87.5t76.5 114t22 176q0 166 -71 256t-201 90z" /> +<glyph unicode=":" horiz-adv-x="485" d="M260 989q0 57 25.5 89t68.5 32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74zM102 55q0 56 25.5 88.5t69.5 32.5q65 0 65 -72q0 -55 -25.5 -88.5t-66.5 -33.5q-68 0 -68 73z" /> +<glyph unicode=";" horiz-adv-x="485" d="M287 238l8 -23q-35 -96 -118.5 -242t-156.5 -237h-73q79 132 141 271t88 231h111zM266 989q0 57 25.5 89t68.5 32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74z" /> +<glyph unicode="<" d="M1051 262l-914 414v74l914 471v-103l-801 -399l801 -350v-107z" /> +<glyph unicode="=" d="M168 885v100h903v-100h-903zM168 461v98h903v-98h-903z" /> +<glyph unicode=">" d="M170 369l801 350l-801 399v103l915 -471v-74l-915 -414v107z" /> +<glyph unicode="?" horiz-adv-x="799" d="M242 362l6 29q29 132 82 206.5t157 147.5q118 84 175 145.5t86.5 127.5t29.5 141q0 108 -67.5 170t-182.5 62q-139 0 -307 -101l-39 86q85 49 171.5 78t187.5 29q159 0 250.5 -84.5t91.5 -229.5q0 -127 -66 -234t-231 -226q-85 -61 -132.5 -108.5t-73 -95t-46.5 -143.5 h-92zM170 59q0 56 25 88.5t69 32.5q66 0 66 -71q0 -54 -24.5 -88.5t-67.5 -34.5q-68 0 -68 73z" /> +<glyph unicode="@" horiz-adv-x="1724" d="M1688 858q0 -179 -56 -323.5t-154.5 -227t-211.5 -82.5q-98 0 -154.5 55t-56.5 144h-4q-54 -97 -132.5 -148t-168.5 -51q-112 0 -178 73t-66 202q0 156 63 283t178 198.5t261 71.5q122 0 252 -52l-84 -315q-39 -140 -39 -221q0 -71 34.5 -111.5t100.5 -40.5 q86 0 160 73.5t117.5 198t43.5 251.5q0 156 -65 277t-187 188t-292 67q-235 0 -424.5 -108.5t-295.5 -304t-106 -439.5q0 -288 155 -449t435 -161q207 0 420 82v-90q-210 -82 -428 -82q-203 0 -357.5 82.5t-238.5 239t-84 370.5q0 276 121.5 493.5t337 337t473.5 119.5 q189 0 330.5 -72.5t221 -213t79.5 -314.5zM1008 969q-113 0 -204.5 -59t-142.5 -165.5t-51 -238.5q0 -92 40.5 -142.5t113.5 -50.5q101 0 180.5 89t124.5 255l78 289q-66 23 -139 23z" /> +<glyph unicode="A" horiz-adv-x="1059" d="M805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449z" /> +<glyph unicode="B" horiz-adv-x="1202" d="M412 1462h379q190 0 290.5 -84t100.5 -241q0 -153 -90 -249t-254 -124v-4q125 -31 188.5 -113.5t63.5 -204.5q0 -205 -140.5 -323.5t-390.5 -118.5h-457zM377 811h278q206 0 313 81t107 238q0 119 -78 180.5t-229 61.5h-272zM358 721l-135 -631h342q201 0 309.5 87.5 t108.5 256.5q0 145 -90 216t-275 71h-260z" /> +<glyph unicode="C" horiz-adv-x="1169" d="M961 1389q-197 0 -351.5 -104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410q0 266 104.5 488t284.5 341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17z" /> +<glyph unicode="D" horiz-adv-x="1350" d="M1288 879q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330l310 1462h305q282 0 426.5 -147.5t144.5 -435.5zM430 90q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206l-275 -1280h209z" /> +<glyph unicode="E" horiz-adv-x="1067" d="M829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627z" /> +<glyph unicode="F" horiz-adv-x="981" d="M205 0h-103l310 1462h708l-20 -94h-604l-134 -620h570l-21 -95h-569z" /> +<glyph unicode="G" horiz-adv-x="1374" d="M856 735h406l-150 -682q-211 -73 -405 -73q-257 0 -397 146t-140 421q0 265 105 483.5t283.5 335.5t395.5 117q113 0 203 -19t184 -59l-38 -94q-110 46 -189.5 62t-167.5 16q-184 0 -339 -107.5t-244 -301.5t-89 -433q0 -229 114.5 -352t326.5 -123q155 0 309 47l117 526 h-303z" /> +<glyph unicode="H" horiz-adv-x="1366" d="M1063 0h-100l151 719h-760l-149 -719h-103l310 1462h102l-139 -649h760l137 649h100z" /> +<glyph unicode="I" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99z" /> +<glyph unicode="J" horiz-adv-x="477" d="M-180 -360q-48 0 -88 8t-56 16l11 92q57 -20 137 -20q213 0 262 241l309 1485h105l-314 -1491q-35 -170 -125 -250.5t-241 -80.5z" /> +<glyph unicode="K" horiz-adv-x="1122" d="M979 0h-111l-342 788l-190 -153l-131 -635h-103l310 1462h102l-158 -723l133 121l680 602h138l-699 -610z" /> +<glyph unicode="L" horiz-adv-x="938" d="M102 0l310 1462h102l-289 -1366h621l-23 -96h-721z" /> +<glyph unicode="M" horiz-adv-x="1669" d="M772 205l733 1257h150l-301 -1462h-101l191 901q79 369 100 447h-6l-780 -1348h-51l-222 1348h-6q-20 -154 -78 -426l-196 -922h-96l309 1462h143l205 -1257h6z" /> +<glyph unicode="N" horiz-adv-x="1372" d="M1069 0h-86l-516 1284h-8q-23 -149 -48 -273t-214 -1011h-95l310 1462h80l522 -1294h8q23 176 74 416l188 878h94z" /> +<glyph unicode="O" horiz-adv-x="1464" d="M1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5 q0 240 -104.5 364t-310.5 124z" /> +<glyph unicode="P" horiz-adv-x="1145" d="M1145 1102q0 -500 -610 -500h-201l-129 -602h-103l310 1462h315q202 0 310 -92.5t108 -267.5zM350 694h191q252 0 373.5 96.5t121.5 305.5q0 274 -329 274h-211z" /> +<glyph unicode="Q" horiz-adv-x="1464" d="M1403 911q0 -216 -70 -418t-186.5 -324t-274.5 -167l267 -350h-142l-231 332l-74 -4q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128 q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124z" /> +<glyph unicode="R" horiz-adv-x="1145" d="M336 633l-131 -633h-103l310 1462h303q430 0 430 -360q0 -182 -103.5 -303t-281.5 -152q201 -591 221 -647h-111l-211 633h-323zM358 725h252q208 0 317 95.5t109 281.5q0 268 -329 268h-211z" /> +<glyph unicode="S" horiz-adv-x="1020" d="M895 403q0 -126 -65.5 -224.5t-179.5 -148.5t-269 -50q-88 0 -172.5 17t-171.5 58v109q163 -92 348 -92q188 0 295.5 86.5t107.5 232.5q0 61 -17 104.5t-52.5 78.5t-91 68t-131.5 75q-150 76 -209.5 164t-59.5 206t59 207.5t165 139t237 49.5q99 0 180 -17.5t168 -60.5 l-32 -94q-66 40 -151.5 63t-164.5 23q-163 0 -259.5 -82.5t-96.5 -218.5q0 -103 49 -170t182 -133q154 -79 213.5 -130t89 -113t29.5 -147z" /> +<glyph unicode="T" horiz-adv-x="985" d="M438 0h-102l289 1368h-432l20 94h973l-19 -94h-440z" /> +<glyph unicode="U" horiz-adv-x="1370" d="M1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101z" /> +<glyph unicode="V" horiz-adv-x="1079" d="M457 147q51 111 124 247l572 1068h117l-799 -1462h-88l-182 1462h100l117 -950q26 -217 35 -365h4z" /> +<glyph unicode="W" horiz-adv-x="1702" d="M1018 1341q-27 -76 -62 -153.5t-563 -1187.5h-82l-73 1462h100l47 -1031l4 -165l-2 -86h6q85 226 170 398l434 884h105l61 -878q19 -266 19 -410h6q30 86 61.5 163t493.5 1125h108q-169 -365 -330.5 -731t-328.5 -731h-78l-78 1075q-11 142 -11 219l1 47h-8z" /> +<glyph unicode="X" horiz-adv-x="971" d="M879 0h-107l-254 678l-526 -678h-127l608 766l-272 696h106l240 -626l483 626h119l-555 -719z" /> +<glyph unicode="Y" horiz-adv-x="965" d="M494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100z" /> +<glyph unicode="Z" d="M913 0h-925l22 92l1069 1276h-764l23 94h887l-19 -88l-1069 -1280h799z" /> +<glyph unicode="[" horiz-adv-x="537" d="M369 -324h-426l376 1786h429l-19 -90h-330l-340 -1605h330z" /> +<glyph unicode="\" horiz-adv-x="641" d="M295 1462l242 -1462h-82l-246 1462h86z" /> +<glyph unicode="]" horiz-adv-x="537" d="M203 1462h426l-377 -1786h-428l18 91h330l340 1605h-330z" /> +<glyph unicode="^" horiz-adv-x="1047" d="M70 569l587 906h91l260 -906h-105l-217 809l-500 -809h-116z" /> +<glyph unicode="_" horiz-adv-x="801" d="M625 -291h-807l18 86h807z" /> +<glyph unicode="`" horiz-adv-x="1135" d="M766 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="a" horiz-adv-x="1133" d="M655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82t-164 -245.5 t-64 -325.5q0 -152 50 -223.5t151 -71.5z" /> +<glyph unicode="b" horiz-adv-x="1151" d="M500 -16q-113 0 -186 59t-97 166h-6l-55 -209h-80l327 1556h95q-131 -628 -162 -751h6q93 156 199 229.5t231 73.5q281 0 281 -375q0 -203 -76 -380t-201 -273t-276 -96zM750 1018q-91 0 -180 -61.5t-160.5 -169.5t-106.5 -235t-35 -206q0 -129 64 -202.5t166 -73.5 q124 0 224 83t164 245t64 325q0 152 -49 223.5t-151 71.5z" /> +<glyph unicode="c" horiz-adv-x="887" d="M477 -20q-174 0 -274.5 110.5t-100.5 306.5q0 193 73.5 361.5t198.5 257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 -222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 -57 -273 -57z" /> +<glyph unicode="d" horiz-adv-x="1133" d="M655 1104q230 0 279 -219h4q12 66 143 671h99l-330 -1556h-82l45 274h-6q-173 -294 -424 -294q-281 0 -281 374q0 193 71.5 370t197.5 278.5t284 101.5zM406 70q89 0 178.5 62.5t160 168t106.5 231t36 209.5q0 126 -61.5 201.5t-168.5 75.5q-124 0 -224 -83t-164 -242.5 t-64 -327.5q0 -295 201 -295z" /> +<glyph unicode="e" horiz-adv-x="928" d="M469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5t-162.5 -308.5h49 q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5z" /> +<glyph unicode="f" horiz-adv-x="578" d="M-131 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190q-33 -161 -104 -234.5 t-195 -73.5z" /> +<glyph unicode="g" horiz-adv-x="1040" d="M1100 1087l-17 -79l-243 -11q26 -28 43.5 -84t17.5 -114q0 -109 -54.5 -206.5t-148 -145.5t-213.5 -48q-63 0 -77 9q-80 -33 -124 -73t-44 -81t31.5 -64.5t113.5 -31.5l121 -11q346 -31 346 -264q0 -112 -65 -197.5t-187 -131.5t-291 -46q-186 0 -291.5 72t-105.5 203 q0 236 309 334q-78 42 -78 123q0 123 191 202q-71 36 -110.5 105.5t-39.5 157.5q0 111 53.5 204t148 146t206.5 53q69 0 147 -21h361zM14 -207q0 -101 81 -150t224 -49q203 0 317 74.5t114 204.5q0 85 -62.5 130.5t-218.5 57.5l-160 15q-157 -45 -226 -114.5t-69 -168.5z M285 711q0 -112 58.5 -170t164.5 -58q88 0 154 37t102.5 114t36.5 169q0 104 -56 161.5t-157 57.5q-93 0 -161 -43t-105 -116t-37 -152z" /> +<glyph unicode="h" horiz-adv-x="1143" d="M764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -188t-103.5 -286l-102 -477h-98l332 1556h96l-86 -411q-44 -200 -66 -279h6q78 113 186.5 175.5t229.5 62.5q124 0 192 -65t68 -183q0 -70 -24 -182l-148 -674h-98z" /> +<glyph unicode="i" horiz-adv-x="475" d="M174 0h-98l231 1087h96zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" /> +<glyph unicode="j" horiz-adv-x="475" d="M-166 -492q-62 0 -113 19v92q47 -22 113 -22q82 0 128.5 51.5t72.5 177.5l266 1261h96l-268 -1271q-35 -165 -106.5 -236.5t-188.5 -71.5zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" /> +<glyph unicode="k" horiz-adv-x="944" d="M270 477l609 610h125l-474 -469l297 -618h-106l-264 559l-205 -188l-80 -371h-96l330 1556h96l-166 -780l-70 -299h4z" /> +<glyph unicode="l" horiz-adv-x="475" d="M170 0h-94l334 1556h94z" /> +<glyph unicode="m" horiz-adv-x="1751" d="M711 0l147 674q25 125 25 162q0 182 -154 182q-106 0 -200 -67.5t-159 -188.5t-100 -287l-100 -475h-98l231 1087h80l-33 -210h6q80 113 181.5 170t212.5 57q106 0 163 -67t60 -195h6q77 129 181 195.5t222 66.5q117 0 182.5 -61.5t65.5 -176.5q0 -29 -2.5 -56.5 t-19.5 -119.5l-152 -690h-100l149 680q25 120 25 176q0 77 -43 119.5t-119 42.5q-157 0 -277.5 -137.5t-168.5 -362.5l-109 -518h-102z" /> +<glyph unicode="n" horiz-adv-x="1143" d="M764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 -477h-98l231 1087h82l-37 -221h6q164 238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98z" /> +<glyph unicode="o" horiz-adv-x="1124" d="M649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83z" /> +<glyph unicode="p" horiz-adv-x="1149" d="M498 -16q-230 0 -279 219h-4q-13 -72 -149 -695h-99l336 1579h82l-45 -274h6q91 153 195.5 224t228.5 71q135 0 208 -92.5t73 -282.5q0 -195 -72 -371t-197.5 -277t-283.5 -101zM748 1018q-87 0 -174 -58.5t-161.5 -167.5t-110.5 -237.5t-36 -208.5q0 -125 61.5 -200.5 t168.5 -75.5q124 0 225 84t164 243.5t63 325.5q0 295 -200 295z" /> +<glyph unicode="q" horiz-adv-x="1157" d="M651 1104q109 0 183.5 -58t99.5 -167h6l55 208h80l-327 -1556h-95l98 470l64 282h-6q-93 -156 -199 -229.5t-231 -73.5q-281 0 -281 374q0 201 75.5 379t200.5 274.5t277 96.5zM401 70q92 0 182 62.5t160.5 171.5t105 236.5t34.5 200.5q0 130 -63.5 203.5t-166.5 73.5 q-124 0 -224 -83t-164 -245t-64 -325q0 -143 45.5 -219t154.5 -76z" /> +<glyph unicode="r" horiz-adv-x="752" d="M713 1106q69 0 123 -14l-21 -93q-47 15 -113 15q-94 0 -179 -64t-153 -192t-100 -277l-100 -481h-98l231 1087h80l-29 -204h6q73 94 123 135.5t106.5 64.5t123.5 23z" /> +<glyph unicode="s" horiz-adv-x="827" d="M713 295q0 -144 -103 -229.5t-280 -85.5q-173 0 -305 75v107q74 -46 153 -71t148 -25q138 0 211 57.5t73 163.5q0 42 -15.5 74t-50 61.5t-132.5 85.5q-148 80 -200 145.5t-52 159.5q0 128 98.5 209.5t259.5 81.5q75 0 158.5 -17.5t140.5 -46.5l-35 -88q-136 64 -264 64 q-116 0 -186 -53t-70 -138q0 -55 17 -88t60.5 -68.5t119.5 -76.5q114 -63 161.5 -103.5t70 -86.5t22.5 -107z" /> +<glyph unicode="t" horiz-adv-x="616" d="M694 1087l-18 -81h-283l-135 -635q-22 -99 -22 -164q0 -139 126 -139q68 0 152 26v-86q-101 -28 -170 -28q-99 0 -153 54.5t-54 158.5q0 73 29 206l129 607h-182l14 67l184 17l97 253h55l-55 -256h286z" /> +<glyph unicode="u" horiz-adv-x="1143" d="M381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100z" /> +<glyph unicode="v" horiz-adv-x="895" d="M276 0l-172 1087h101l108 -735q26 -165 33 -254h6q51 115 129 256l406 733h102l-600 -1087h-113z" /> +<glyph unicode="w" horiz-adv-x="1393" d="M838 0l-60 686q-14 224 -14 266h-6q-34 -92 -144 -290l-356 -662h-117l-20 1087h92l13 -821l-3 -157h6q61 134 150 297l373 681h77l64 -681q14 -147 14 -297h6l24 61l101 236l320 681h96l-508 -1087h-108z" /> +<glyph unicode="x" horiz-adv-x="922" d="M442 483l-393 -483h-121l471 559l-245 528h100l207 -462l373 462h120l-448 -534l258 -553h-98z" /> +<glyph unicode="y" horiz-adv-x="920" d="M123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184z" /> +<glyph unicode="z" horiz-adv-x="887" d="M700 0h-729l15 72l776 932h-543l17 83h659l-18 -83l-762 -920h602z" /> +<glyph unicode="{" horiz-adv-x="709" d="M424 -324q-256 0 -256 199q0 45 16 115l56 252q18 90 18 127q0 159 -199 159l21 78q126 0 191 49t89 158l89 393q30 135 106 195.5t215 60.5h29l-17 -86q-86 -2 -129 -20.5t-69.5 -61.5t-44.5 -120l-74 -338q-30 -134 -91.5 -194.5t-164.5 -78.5v-4q68 -18 105.5 -68.5 t37.5 -121.5q0 -52 -24 -164l-47 -225q-13 -58 -13 -101q0 -61 37.5 -89t138.5 -28v-86h-20z" /> +<glyph unicode="|" d="M584 1561h100v-2071h-100v2071z" /> +<glyph unicode="}" horiz-adv-x="709" d="M332 1462q131 0 189.5 -51t58.5 -147q0 -41 -17 -115l-55 -252q-19 -95 -19 -127q0 -77 49.5 -118.5t149.5 -41.5l-20 -78q-125 0 -191 -48.5t-90 -157.5l-88 -394q-32 -139 -108.5 -197.5t-213.5 -58.5h-18v86q96 2 138 21t68.5 61t43.5 121l74 338q27 126 87.5 189.5 t168.5 82.5v5q-75 20 -109.5 72.5t-34.5 117.5q0 55 18 131l54 258q12 61 12 101q0 44 -18 69t-54 36t-116 11l20 86h21z" /> +<glyph unicode="~" d="M350 745q-49 0 -108 -30.5t-115 -89.5v94q108 110 233 110q61 0 115 -13.5t156 -57.5q126 -58 219 -58q54 0 107.5 29t117.5 96v-96q-111 -113 -233 -113q-117 0 -271 72q-62 29 -112.5 43t-108.5 14z" /> +<glyph unicode="¡" horiz-adv-x="502" d="M264 711h62l-203 -1086h-119zM432 1030q0 -56 -25 -88.5t-69 -32.5q-66 0 -66 72q0 55 25 89t68 34q67 0 67 -74z" /> +<glyph unicode="¢" d="M578 -20h-93l45 215q-132 25 -206 132.5t-74 272.5q0 184 63.5 341t178 253t256.5 111l36 178h90l-38 -176q116 -4 217 -43l-29 -90q-107 47 -217 47q-130 0 -233 -76t-162.5 -221t-59.5 -322q0 -164 74.5 -247t208.5 -83q127 0 264 60v-92q-118 -58 -281 -58z" /> +<glyph unicode="£" d="M879 1479q170 0 313 -78l-39 -84l-54 26q-108 50 -231 50q-134 0 -220.5 -74.5t-117.5 -220.5l-73 -340h409l-18 -82h-408l-57 -268q-50 -225 -188 -314h759l-20 -94h-938l16 84q93 11 165.5 95.5t107.5 236.5l57 260h-199l17 82h198l76 350q41 187 155 279t290 92z" /> +<glyph unicode="¤" d="M262 723q0 118 74 225l-129 129l63 64l127 -129q105 78 230 78q118 0 223 -78l131 129l61 -62l-129 -129q78 -106 78 -227q0 -135 -78 -227l129 -127l-61 -62l-131 127q-104 -76 -223 -76q-126 0 -228 80l-129 -129l-61 62l127 127q-74 98 -74 225zM350 723 q0 -116 80 -196.5t197 -80.5t198.5 81t81.5 196q0 75 -36.5 140t-102.5 104t-141 39q-114 0 -195.5 -82t-81.5 -201z" /> +<glyph unicode="¥" d="M584 645l544 817h117l-559 -823h266l-16 -76h-315l-39 -190h317l-18 -84h-316l-59 -289h-105l64 289h-299l18 84h299l41 190h-301l17 76h258l-215 823h100z" /> +<glyph unicode="¦" d="M578 1561h100v-756h-100v756zM578 246h100v-756h-100v756z" /> +<glyph unicode="§" horiz-adv-x="995" d="M211 778q0 101 69.5 182t198.5 130q-64 31 -103.5 85.5t-39.5 120.5q0 74 46 134.5t132.5 94.5t202.5 34q163 0 289 -58l-31 -80q-138 54 -264 54q-124 0 -202.5 -46.5t-78.5 -123.5q0 -59 46 -104.5t183 -106.5q112 -52 158.5 -89.5t71 -85t24.5 -110.5 q0 -197 -249 -317q122 -64 122 -197q0 -86 -48 -153.5t-139.5 -105.5t-221.5 -38q-157 0 -275 53v99q47 -27 126 -46.5t153 -19.5q149 0 228 52.5t79 150.5q0 62 -42.5 106t-166.5 96q-155 65 -211.5 130t-56.5 159zM559 1038q-119 -30 -187.5 -97.5t-68.5 -154.5 q0 -57 24.5 -96.5t81 -73t187.5 -81.5q103 49 162 113.5t59 156.5q0 72 -57.5 126t-200.5 107z" /> +<glyph unicode="¨" horiz-adv-x="1135" d="M836 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM492 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="©" horiz-adv-x="1704" d="M944 1092q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q85 0 199 43v-88q-104 -45 -209 -45q-187 0 -288 116t-101 330q0 207 110 332t297 125q119 0 227 -52l-36 -83q-99 45 -191 45zM147 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM240 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325z" /> +<glyph unicode="ª" horiz-adv-x="643" d="M487 1485q55 0 97.5 -29t66.5 -86h6l35 103h66l-137 -650h-72l22 125h-4q-96 -137 -223 -137q-80 0 -127 56.5t-47 164.5q0 189 90.5 321t226.5 132zM369 885q66 0 133.5 75.5t97.5 184.5q16 51 16 123q0 58 -36 100.5t-93 42.5q-94 0 -161.5 -111.5t-67.5 -271.5 q0 -143 111 -143z" /> +<glyph unicode="«" horiz-adv-x="860" d="M426 932l57 -49l-317 -336l213 -385l-64 -39l-254 418l2 26zM786 932l58 -49l-314 -336l209 -385l-63 -39l-254 418l2 26z" /> +<glyph unicode="¬" d="M1028 772v-500h-100v400h-803v100h903z" /> +<glyph unicode="­" horiz-adv-x="629" d="M77 502zM77 502l18 90h457l-16 -90h-459z" /> +<glyph unicode="®" horiz-adv-x="1704" d="M758 731h112q93 0 144 46.5t51 135.5q0 172 -197 172h-110v-354zM1169 918q0 -80 -39.5 -141t-109.5 -93l237 -393h-120l-211 360h-168v-360h-101v880h211q143 0 222 -62t79 -191zM150 731q0 207 103.5 382t276.5 272.5t371 97.5q200 0 375 -100t276 -275t101 -377 q0 -197 -97 -370t-272 -277t-383 -104q-204 0 -376.5 100.5t-273.5 273t-101 377.5zM242 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325z" /> +<glyph unicode="¯" horiz-adv-x="655" d="M1001 1556h-653l53 97h654z" /> +<glyph unicode="°" horiz-adv-x="877" d="M242 1190q0 120 85 206.5t208 86.5q122 0 207 -86.5t85 -206.5q0 -122 -85.5 -207.5t-206.5 -85.5q-122 0 -207.5 85.5t-85.5 207.5zM315 1190q0 -89 64.5 -153t155.5 -64q92 0 155.5 64t63.5 153q0 90 -64 155.5t-155 65.5q-90 0 -155 -65.5t-65 -155.5z" /> +<glyph unicode="±" d="M528 629h-401v98h401v406h101v-406h401v-98h-401v-400h-101v400zM127 0v100h903v-100h-903z" /> +<glyph unicode="²" horiz-adv-x="643" d="M604 586h-522l16 80l297 258q137 118 182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 -223h416z" /> +<glyph unicode="³" horiz-adv-x="643" d="M705 1276q0 -85 -48.5 -148t-154.5 -88v-4q66 -16 105.5 -68t39.5 -124q0 -77 -39 -141t-109 -99t-161 -35q-59 0 -123.5 15.5t-105.5 40.5v90q46 -28 108 -48t125 -20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5t66.5 129.5 q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 -148.5z" /> +<glyph unicode="´" horiz-adv-x="1135" d="M580 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="µ" horiz-adv-x="1171" d="M238 242q0 -82 48.5 -127t135.5 -45q110 0 207 64.5t162.5 182.5t101.5 285l104 485h99l-234 -1087h-78l29 205h-6q-164 -221 -404 -221q-85 0 -139 32.5t-76 89.5h-6q-18 -132 -51 -284l-63 -314h-97l338 1579h101l-152 -698q-20 -96 -20 -147z" /> +<glyph unicode="¶" horiz-adv-x="1341" d="M1208 -260h-100v1722h-227v-1722h-101v819q-64 -18 -145 -18q-216 0 -318 125t-102 376q0 260 109 387t342 127h542v-1816z" /> +<glyph unicode="·" horiz-adv-x="485" d="M207 625zM207 698q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" /> +<glyph unicode="¸" horiz-adv-x="420" d="M197 -289q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" /> +<glyph unicode="¹" horiz-adv-x="643" d="M512 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59z" /> +<glyph unicode="º" horiz-adv-x="655" d="M518 1479q105 0 165 -64t60 -180q0 -115 -40 -214t-114 -156.5t-175 -57.5q-114 0 -169 67.5t-55 184.5q0 112 41.5 209.5t116 154t170.5 56.5zM508 1405q-70 0 -124 -46.5t-84 -124.5t-30 -167q0 -186 156 -186q73 0 125.5 46.5t81.5 127.5t29 176q0 83 -39 128.5 t-115 45.5z" /> +<glyph unicode="»" horiz-adv-x="860" d="M451 123l-58 49l314 336l-209 385l63 39l254 -418l-2 -27zM90 123l-57 49l313 336l-209 385l64 39l254 -418l-2 -27z" /> +<glyph unicode="¼" horiz-adv-x="1481" d="M129 0zM1319 230h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM1121 302q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291zM1323 1462l-1087 -1462h-107l1086 1462h108zM509 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59 t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59z" /> +<glyph unicode="½" horiz-adv-x="1458" d="M53 0zM1278 1h-522l16 80l297 258q137 118 182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 -223h416zM431 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5 t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59zM1247 1462l-1087 -1462h-107l1086 1462h108z" /> +<glyph unicode="¾" horiz-adv-x="1458" d="M71 0zM1380 230h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM1182 302q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291zM667 1276q0 -85 -48.5 -148t-154.5 -88v-4q66 -16 105.5 -68t39.5 -124q0 -77 -39 -141t-109 -99t-161 -35 q-59 0 -123.5 15.5t-105.5 40.5v90q46 -28 108 -48t125 -20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5t66.5 129.5q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 -148.5zM1407 1462l-1087 -1462 h-107l1086 1462h108z" /> +<glyph unicode="¿" horiz-adv-x="799" d="M641 717l-6 -29q-28 -127 -79 -200t-161 -154q-118 -84 -175 -145.5t-86.5 -127.5t-29.5 -141q0 -106 65.5 -168.5t184.5 -62.5q141 0 308 100l38 -86q-85 -49 -170.5 -77.5t-187.5 -28.5q-159 0 -250.5 84.5t-91.5 228.5q0 133 70 240.5t227 220.5q85 61 133.5 109 t73 95t45.5 142h92zM713 1020q0 -56 -25.5 -88.5t-69.5 -32.5q-65 0 -65 72q0 56 25 89.5t67 33.5q68 0 68 -74z" /> +<glyph unicode="À" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM815 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="Á" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM668 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="Â" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM1007 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5 t92.5 -146.5v-29z" /> +<glyph unicode="Ã" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM911 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5 q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" /> +<glyph unicode="Ä" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM879 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM535 1704q0 49 20.5 78t56.5 29q54 0 54 -64 q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="Å" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM945 1600q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM867 1598 q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36t34.5 93z" /> +<glyph unicode="Æ" horiz-adv-x="1640" d="M1403 0h-727l110 522h-444l-328 -522h-131l946 1462h883l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 -627h626zM408 627h401l156 741h-88z" /> +<glyph unicode="Ç" horiz-adv-x="1169" d="M170 0zM961 1389q-197 0 -351.5 -104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410q0 266 104.5 488t284.5 341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17zM752 -289 q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" /> +<glyph unicode="È" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM891 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="É" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM654 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="Ê" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM1036 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="Ë" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM902 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM558 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="Ì" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM525 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="Í" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM419 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="Î" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM738 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="Ï" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM604 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM260 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="Ð" horiz-adv-x="1352" d="M1288 879q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330l144 676h-156l21 96h155l146 690h305q282 0 426.5 -147.5t144.5 -435.5zM430 90q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206l-129 -598h378l-20 -96h-379l-125 -586h209z" /> +<glyph unicode="Ñ" horiz-adv-x="1372" d="M102 0zM1069 0h-86l-516 1284h-8q-23 -149 -48 -273t-214 -1011h-95l310 1462h80l522 -1294h8q23 176 74 416l188 878h94zM1062 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14 t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" /> +<glyph unicode="Ò" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM989 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="Ó" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM844 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="Ô" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1171 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="Õ" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1077 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z " /> +<glyph unicode="Ö" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1031 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM687 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="×" d="M551 723l-330 332l70 69l330 -329l333 329l68 -67l-332 -334l332 -332l-68 -67l-333 329l-330 -327l-68 67z" /> +<glyph unicode="Ø" horiz-adv-x="1464" d="M1403 911q0 -187 -52 -365.5t-144.5 -304.5t-223 -193.5t-291.5 -67.5q-215 0 -348 112l-139 -170l-66 64l146 172q-113 149 -113 401q0 263 94 479.5t256.5 330.5t370.5 114q219 0 352 -121l133 168l70 -53l-145 -183q45 -51 72.5 -161t27.5 -222zM879 1389 q-134 0 -244 -59.5t-188.5 -170t-124.5 -267.5t-46 -319q0 -105 21.5 -191t56.5 -138l826 1032q-107 113 -301 113zM1294 901q0 85 -17.5 172t-43.5 129l-821 -1030q107 -100 293 -100q170 0 301 100t209.5 296.5t78.5 432.5z" /> +<glyph unicode="Ù" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM946 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303 v-25z" /> +<glyph unicode="Ú" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM838 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5 t-192.5 -146.5h-67v21z" /> +<glyph unicode="Û" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM1148 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54 v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="Ü" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM1022 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29 q-55 0 -55 63zM678 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="Ý" horiz-adv-x="965" d="M193 0zM494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100zM563 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="Þ" horiz-adv-x="1145" d="M1087 836q0 -247 -153 -373.5t-457 -126.5h-201l-71 -336h-103l310 1462h102l-57 -266h213q200 0 308.5 -92.5t108.5 -267.5zM293 428h190q256 0 376 98.5t120 302.5q0 275 -330 275h-211z" /> +<glyph unicode="ß" horiz-adv-x="1094" d="M-162 -492q-73 0 -119 23v90q53 -24 115 -24q79 0 123 50.5t66 153.5l305 1409q80 357 405 357q137 0 215 -61.5t78 -174.5q0 -75 -44.5 -140.5t-166.5 -148.5q-107 -76 -141.5 -124.5t-34.5 -106.5q0 -51 34 -88.5t93 -75.5q96 -63 138 -133.5t42 -165.5 q0 -170 -106.5 -269t-286.5 -99q-143 0 -234 65v109q45 -36 112.5 -59t129.5 -23q132 0 208.5 71t76.5 195q0 75 -31.5 129t-109.5 108q-82 58 -119 110.5t-37 121.5q0 57 21 103t60.5 88.5t137.5 113.5q101 70 131.5 116t30.5 101q0 70 -55 110t-150 40q-129 0 -205 -76 t-108 -229l-291 -1377q-33 -152 -103.5 -220.5t-179.5 -68.5z" /> +<glyph unicode="à" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM809 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="á" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM586 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="â" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM955 1243h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="ã" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM858 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173 t-124.5 -55z" /> +<glyph unicode="ä" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM835 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM491 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="å" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM927 1448q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM849 1446q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36 t34.5 93z" /> +<glyph unicode="æ" horiz-adv-x="1602" d="M1155 -20q-123 0 -211 60t-117 165l-39 -205h-77l41 254h-9q-94 -142 -189 -208t-208 -66q-120 0 -182 94t-62 270q0 206 70.5 384.5t192.5 277t274 98.5q106 0 166 -56.5t74 -156.5h10l59 192h66l-35 -186q139 207 350 207q112 0 175 -61.5t63 -172.5 q0 -179 -158.5 -271.5t-470.5 -92.5h-39q-8 -51 -8 -96q0 -161 69.5 -250.5t217.5 -89.5q69 0 133.5 21t130.5 52v-94q-80 -37 -147 -53t-140 -16zM369 70q67 0 138.5 42t134 117.5t106 170.5t63.5 199t20 165q0 118 -49 186t-141 68q-123 0 -223 -86t-156.5 -240 t-56.5 -340q0 -150 42.5 -216t121.5 -66zM1317 1018q-119 0 -232 -115.5t-172 -308.5h48q263 0 383 67t120 203q0 71 -38.5 112.5t-108.5 41.5z" /> +<glyph unicode="ç" horiz-adv-x="887" d="M102 0zM477 -20q-174 0 -274.5 110.5t-100.5 306.5q0 193 73.5 361.5t198.5 257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 -222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 -57 -273 -57zM574 -289 q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" /> +<glyph unicode="è" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM751 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="é" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM532 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="ê" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM904 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="ë" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM780 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM436 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="ì" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM454 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="í" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM284 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="î" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM642 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="ï" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM515 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM171 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="ð" horiz-adv-x="1124" d="M713 1364q-54 60 -158 139l59 68q32 -26 81 -66t100 -94l266 150l39 -74l-256 -141q87 -116 131.5 -276t44.5 -335q0 -355 -141.5 -555t-399.5 -200q-177 0 -277 106.5t-100 294.5q0 170 63 301.5t178.5 203.5t262.5 72q107 0 188 -49.5t121 -142.5h5q0 139 -43 289 t-115 243l-295 -163l-39 73zM489 70q118 0 208.5 61t144 186.5t53.5 270.5q0 77 -35 142t-100 101.5t-156 36.5q-124 0 -213.5 -61.5t-137.5 -169.5t-48 -248q0 -153 73.5 -236t210.5 -83z" /> +<glyph unicode="ñ" horiz-adv-x="1143" d="M76 0zM764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 -477h-98l231 1087h82l-37 -221h6q164 238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98zM874 1249q-40 0 -77.5 19t-75.5 45 q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" /> +<glyph unicode="ò" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM744 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="ó" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM573 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="ô" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM941 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="õ" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM839 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" /> +<glyph unicode="ö" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM812 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM468 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="÷" d="M168 672v100h903v-100h-903zM522 373q0 106 96 106q48 0 73.5 -27.5t25.5 -78.5q0 -57 -29 -82t-70 -25q-96 0 -96 107zM522 1071q0 107 96 107q46 0 72.5 -27.5t26.5 -79.5q0 -57 -29 -81.5t-70 -24.5q-96 0 -96 106z" /> +<glyph unicode="ø" horiz-adv-x="1124" d="M164 127q-66 106 -66 276q0 191 73 358t197 257t281 90q150 0 250 -82l109 133l65 -53l-117 -143q70 -105 70 -263q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-163 0 -254 83l-110 -135l-64 54zM924 702q0 101 -35 179l-608 -742q67 -73 202 -73q127 0 225.5 77.5 t157 228t58.5 330.5zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -125 32 -197l605 739q-74 72 -197 72z" /> +<glyph unicode="ù" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM774 1241h-66q-50 52 -114 144.5 t-99 162.5v21h115q46 -129 164 -303v-25z" /> +<glyph unicode="ú" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM627 1262q66 51 150.5 142 t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="û" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM957 1241h-49q-70 60 -161 207 q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="ü" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM827 1366q0 49 20.5 78t56.5 29 q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM483 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="ý" horiz-adv-x="920" d="M0 0zM123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184zM505 1262q66 51 150.5 142t129.5 165h137v-23 q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" /> +<glyph unicode="þ" horiz-adv-x="1163" d="M498 -16q-230 0 -279 219h-4q-13 -72 -149 -695h-99l434 2048h99q-114 -535 -164 -751h6q93 156 199 229.5t231 73.5q133 0 206 -92.5t73 -282.5q0 -195 -72 -371t-197.5 -277t-283.5 -101zM748 1018q-86 0 -172.5 -57.5t-162.5 -169.5t-111.5 -238t-35.5 -207 q0 -125 61.5 -200.5t168.5 -75.5q124 0 225 84t164 243.5t63 325.5q0 295 -200 295z" /> +<glyph unicode="ÿ" horiz-adv-x="920" d="M0 0zM123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184zM698 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77 t-55 -29q-55 0 -55 63zM354 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="ı" horiz-adv-x="475" d="M174 0h-98l231 1087h96z" /> +<glyph unicode="Œ" horiz-adv-x="1767" d="M1530 0h-666q-25 -6 -77.5 -13t-94.5 -7q-251 0 -385.5 149.5t-134.5 429.5q0 263 96 482t262 330.5t381 111.5q130 0 240 -21h688l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 -627h626zM705 72q68 0 116 12l271 1290q-110 15 -189 15q-182 0 -321.5 -98.5 t-222.5 -293.5t-83 -424q0 -245 109 -373t320 -128z" /> +<glyph unicode="œ" horiz-adv-x="1720" d="M1262 -20q-135 0 -228 69t-125 201q-65 -127 -179 -198.5t-257 -71.5q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90q141 0 237 -74.5t126 -212.5q70 132 182.5 207.5t241.5 75.5q114 0 182 -61t68 -166q0 -181 -163.5 -276t-486.5 -95h-32 q-7 -38 -7 -98q0 -165 74 -251.5t213 -86.5q133 0 277 73v-94q-140 -69 -299 -69zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83zM1423 1018q-131 0 -243 -115t-162 -309h49q516 0 516 270 q0 70 -44.5 112t-115.5 42z" /> +<glyph unicode="Ÿ" horiz-adv-x="965" d="M193 0zM494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100zM798 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM454 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" /> +<glyph unicode="ˆ" horiz-adv-x="1135" d="M958 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" /> +<glyph unicode="˚" horiz-adv-x="1182" d="M967 1448q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM889 1446q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36t34.5 93z" /> +<glyph unicode="˜" horiz-adv-x="1135" d="M831 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="635" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="238" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode=" " horiz-adv-x="105" /> +<glyph unicode="‐" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" /> +<glyph unicode="‑" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" /> +<glyph unicode="‒" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" /> +<glyph unicode="–" horiz-adv-x="983" d="M66 502l18 90h807l-17 -90h-808z" /> +<glyph unicode="—" horiz-adv-x="1966" d="M68 502l18 90h1788l-16 -90h-1790z" /> +<glyph unicode="‘" horiz-adv-x="299" d="M133 961l-4 22q41 100 116 231t161 248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" /> +<glyph unicode="’" horiz-adv-x="299" d="M475 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113z" /> +<glyph unicode="‚" horiz-adv-x="451" d="M246 238l4 -23q-40 -97 -115.5 -230t-161.5 -249h-73q68 110 131.5 248t101.5 254h113z" /> +<glyph unicode="“" horiz-adv-x="631" d="M133 961l-4 22q41 100 116 231t161 248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113zM467 961l-4 22q43 104 120 238.5t156 240.5h74q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" /> +<glyph unicode="”" horiz-adv-x="631" d="M809 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113zM475 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113z" /> +<glyph unicode="„" horiz-adv-x="776" d="M561 238l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 108 129 242.5t105 259.5h112zM227 238l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q73 119 135.5 254.5t98.5 247.5h112z" /> +<glyph unicode="•" horiz-adv-x="793" d="M248 682q0 137 63 213t172 76q76 0 116 -39.5t40 -118.5q0 -125 -66 -207t-176 -82q-149 0 -149 158z" /> +<glyph unicode="…" horiz-adv-x="1489" d="M69 0zM69 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM569 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM1071 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode="‹" horiz-adv-x="537" d="M451 932l57 -49l-318 -336l213 -385l-63 -39l-254 418l2 26z" /> +<glyph unicode="›" horiz-adv-x="537" d="M94 123l-57 49l317 336l-213 385l64 39l254 -418l-2 -27z" /> +<glyph unicode="⁄" horiz-adv-x="274" d="M731 1462l-1087 -1462h-107l1086 1462h108z" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode="⁴" horiz-adv-x="643" d="M657 815h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM459 887q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291z" /> +<glyph unicode="€" d="M991 1389q-186 0 -330.5 -120.5t-226.5 -346.5h457l-21 -82h-460q-30 -98 -39 -217h442l-20 -82h-424q0 -243 89 -356t265 -113q115 0 252 57v-94q-129 -55 -270 -55q-209 0 -325 139.5t-116 394.5v27h-184l16 82h172q5 101 35 217h-170l19 82h174q95 273 270 417 t399 144q166 0 287 -90l-53 -82q-102 78 -238 78z" /> +<glyph unicode="™" horiz-adv-x="1534" d="M477 741h-86v643h-217v78h522v-78h-219v-643zM1077 741l-221 609h-6l4 -201v-408h-82v721h125l221 -606l223 606h125v-721h-86v398l4 207h-6l-227 -605h-74z" /> +<glyph unicode="" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" /> +<glyph horiz-adv-x="1133" d="M0 0z" /> +<hkern u1=""" u2="Ÿ" k="-20" /> +<hkern u1=""" u2="œ" k="123" /> +<hkern u1=""" u2="ü" k="61" /> +<hkern u1=""" u2="û" k="61" /> +<hkern u1=""" u2="ú" k="61" /> +<hkern u1=""" u2="ù" k="61" /> +<hkern u1=""" u2="ø" k="123" /> +<hkern u1=""" u2="ö" k="123" /> +<hkern u1=""" u2="õ" k="123" /> +<hkern u1=""" u2="ô" k="123" /> +<hkern u1=""" u2="ó" k="123" /> +<hkern u1=""" u2="ò" k="123" /> +<hkern u1=""" u2="ë" k="123" /> +<hkern u1=""" u2="ê" k="123" /> +<hkern u1=""" u2="é" k="123" /> +<hkern u1=""" u2="è" k="123" /> +<hkern u1=""" u2="ç" k="123" /> +<hkern u1=""" u2="æ" k="82" /> +<hkern u1=""" u2="å" k="82" /> +<hkern u1=""" u2="ä" k="82" /> +<hkern u1=""" u2="ã" k="82" /> +<hkern u1=""" u2="â" k="82" /> +<hkern u1=""" u2="á" k="82" /> +<hkern u1=""" u2="à" k="123" /> +<hkern u1=""" u2="Ý" k="-20" /> +<hkern u1=""" u2="Å" k="143" /> +<hkern u1=""" u2="Ä" k="143" /> +<hkern u1=""" u2="Ã" k="143" /> +<hkern u1=""" u2="Â" k="143" /> +<hkern u1=""" u2="Á" k="143" /> +<hkern u1=""" u2="À" k="143" /> +<hkern u1=""" u2="u" k="61" /> +<hkern u1=""" u2="s" k="61" /> +<hkern u1=""" u2="r" k="61" /> +<hkern u1=""" u2="q" k="123" /> +<hkern u1=""" u2="p" k="61" /> +<hkern u1=""" u2="o" k="123" /> +<hkern u1=""" u2="n" k="61" /> +<hkern u1=""" u2="m" k="61" /> +<hkern u1=""" u2="g" k="61" /> +<hkern u1=""" u2="e" k="123" /> +<hkern u1=""" u2="d" k="123" /> +<hkern u1=""" u2="c" k="123" /> +<hkern u1=""" u2="a" k="82" /> +<hkern u1=""" u2="Y" k="-20" /> +<hkern u1=""" u2="W" k="-41" /> +<hkern u1=""" u2="V" k="-41" /> +<hkern u1=""" u2="T" k="-41" /> +<hkern u1=""" u2="A" k="143" /> +<hkern u1="'" u2="Ÿ" k="-20" /> +<hkern u1="'" u2="œ" k="123" /> +<hkern u1="'" u2="ü" k="61" /> +<hkern u1="'" u2="û" k="61" /> +<hkern u1="'" u2="ú" k="61" /> +<hkern u1="'" u2="ù" k="61" /> +<hkern u1="'" u2="ø" k="123" /> +<hkern u1="'" u2="ö" k="123" /> +<hkern u1="'" u2="õ" k="123" /> +<hkern u1="'" u2="ô" k="123" /> +<hkern u1="'" u2="ó" k="123" /> +<hkern u1="'" u2="ò" k="123" /> +<hkern u1="'" u2="ë" k="123" /> +<hkern u1="'" u2="ê" k="123" /> +<hkern u1="'" u2="é" k="123" /> +<hkern u1="'" u2="è" k="123" /> +<hkern u1="'" u2="ç" k="123" /> +<hkern u1="'" u2="æ" k="82" /> +<hkern u1="'" u2="å" k="82" /> +<hkern u1="'" u2="ä" k="82" /> +<hkern u1="'" u2="ã" k="82" /> +<hkern u1="'" u2="â" k="82" /> +<hkern u1="'" u2="á" k="82" /> +<hkern u1="'" u2="à" k="123" /> +<hkern u1="'" u2="Ý" k="-20" /> +<hkern u1="'" u2="Å" k="143" /> +<hkern u1="'" u2="Ä" k="143" /> +<hkern u1="'" u2="Ã" k="143" /> +<hkern u1="'" u2="Â" k="143" /> +<hkern u1="'" u2="Á" k="143" /> +<hkern u1="'" u2="À" k="143" /> +<hkern u1="'" u2="u" k="61" /> +<hkern u1="'" u2="s" k="61" /> +<hkern u1="'" u2="r" k="61" /> +<hkern u1="'" u2="q" k="123" /> +<hkern u1="'" u2="p" k="61" /> +<hkern u1="'" u2="o" k="123" /> +<hkern u1="'" u2="n" k="61" /> +<hkern u1="'" u2="m" k="61" /> +<hkern u1="'" u2="g" k="61" /> +<hkern u1="'" u2="e" k="123" /> +<hkern u1="'" u2="d" k="123" /> +<hkern u1="'" u2="c" k="123" /> +<hkern u1="'" u2="a" k="82" /> +<hkern u1="'" u2="Y" k="-20" /> +<hkern u1="'" u2="W" k="-41" /> +<hkern u1="'" u2="V" k="-41" /> +<hkern u1="'" u2="T" k="-41" /> +<hkern u1="'" u2="A" k="143" /> +<hkern u1="(" u2="J" k="-184" /> +<hkern u1="," u2="Ÿ" k="123" /> +<hkern u1="," u2="Œ" k="102" /> +<hkern u1="," u2="Ý" k="123" /> +<hkern u1="," u2="Ü" k="41" /> +<hkern u1="," u2="Û" k="41" /> +<hkern u1="," u2="Ú" k="41" /> +<hkern u1="," u2="Ù" k="41" /> +<hkern u1="," u2="Ø" k="102" /> +<hkern u1="," u2="Ö" k="102" /> +<hkern u1="," u2="Õ" k="102" /> +<hkern u1="," u2="Ô" k="102" /> +<hkern u1="," u2="Ó" k="102" /> +<hkern u1="," u2="Ò" k="102" /> +<hkern u1="," u2="Ç" k="102" /> +<hkern u1="," u2="Y" k="123" /> +<hkern u1="," u2="W" k="123" /> +<hkern u1="," u2="V" k="123" /> +<hkern u1="," u2="U" k="41" /> +<hkern u1="," u2="T" k="143" /> +<hkern u1="," u2="Q" k="102" /> +<hkern u1="," u2="O" k="102" /> +<hkern u1="," u2="G" k="102" /> +<hkern u1="," u2="C" k="102" /> +<hkern u1="-" u2="T" k="82" /> +<hkern u1="." u2="Ÿ" k="123" /> +<hkern u1="." u2="Œ" k="102" /> +<hkern u1="." u2="Ý" k="123" /> +<hkern u1="." u2="Ü" k="41" /> +<hkern u1="." u2="Û" k="41" /> +<hkern u1="." u2="Ú" k="41" /> +<hkern u1="." u2="Ù" k="41" /> +<hkern u1="." u2="Ø" k="102" /> +<hkern u1="." u2="Ö" k="102" /> +<hkern u1="." u2="Õ" k="102" /> +<hkern u1="." u2="Ô" k="102" /> +<hkern u1="." u2="Ó" k="102" /> +<hkern u1="." u2="Ò" k="102" /> +<hkern u1="." u2="Ç" k="102" /> +<hkern u1="." u2="Y" k="123" /> +<hkern u1="." u2="W" k="123" /> +<hkern u1="." u2="V" k="123" /> +<hkern u1="." u2="U" k="41" /> +<hkern u1="." u2="T" k="143" /> +<hkern u1="." u2="Q" k="102" /> +<hkern u1="." u2="O" k="102" /> +<hkern u1="." u2="G" k="102" /> +<hkern u1="." u2="C" k="102" /> +<hkern u1="A" u2="”" k="143" /> +<hkern u1="A" u2="’" k="143" /> +<hkern u1="A" u2="Ÿ" k="123" /> +<hkern u1="A" u2="Œ" k="41" /> +<hkern u1="A" u2="Ý" k="123" /> +<hkern u1="A" u2="Ø" k="41" /> +<hkern u1="A" u2="Ö" k="41" /> +<hkern u1="A" u2="Õ" k="41" /> +<hkern u1="A" u2="Ô" k="41" /> +<hkern u1="A" u2="Ó" k="41" /> +<hkern u1="A" u2="Ò" k="41" /> +<hkern u1="A" u2="Ç" k="41" /> +<hkern u1="A" u2="Y" k="123" /> +<hkern u1="A" u2="W" k="82" /> +<hkern u1="A" u2="V" k="82" /> +<hkern u1="A" u2="T" k="143" /> +<hkern u1="A" u2="Q" k="41" /> +<hkern u1="A" u2="O" k="41" /> +<hkern u1="A" u2="J" k="-266" /> +<hkern u1="A" u2="G" k="41" /> +<hkern u1="A" u2="C" k="41" /> +<hkern u1="A" u2="'" k="143" /> +<hkern u1="A" u2=""" k="143" /> +<hkern u1="B" u2="„" k="82" /> +<hkern u1="B" u2="‚" k="82" /> +<hkern u1="B" u2="Ÿ" k="20" /> +<hkern u1="B" u2="Ý" k="20" /> +<hkern u1="B" u2="Å" k="41" /> +<hkern u1="B" u2="Ä" k="41" /> +<hkern u1="B" u2="Ã" k="41" /> +<hkern u1="B" u2="Â" k="41" /> +<hkern u1="B" u2="Á" k="41" /> +<hkern u1="B" u2="À" k="41" /> +<hkern u1="B" u2="Z" k="20" /> +<hkern u1="B" u2="Y" k="20" /> +<hkern u1="B" u2="X" k="41" /> +<hkern u1="B" u2="W" k="20" /> +<hkern u1="B" u2="V" k="20" /> +<hkern u1="B" u2="T" k="61" /> +<hkern u1="B" u2="A" k="41" /> +<hkern u1="B" u2="." k="82" /> +<hkern u1="B" u2="," k="82" /> +<hkern u1="C" u2="Œ" k="41" /> +<hkern u1="C" u2="Ø" k="41" /> +<hkern u1="C" u2="Ö" k="41" /> +<hkern u1="C" u2="Õ" k="41" /> +<hkern u1="C" u2="Ô" k="41" /> +<hkern u1="C" u2="Ó" k="41" /> +<hkern u1="C" u2="Ò" k="41" /> +<hkern u1="C" u2="Ç" k="41" /> +<hkern u1="C" u2="Q" k="41" /> +<hkern u1="C" u2="O" k="41" /> +<hkern u1="C" u2="G" k="41" /> +<hkern u1="C" u2="C" k="41" /> +<hkern u1="D" u2="„" k="82" /> +<hkern u1="D" u2="‚" k="82" /> +<hkern u1="D" u2="Ÿ" k="20" /> +<hkern u1="D" u2="Ý" k="20" /> +<hkern u1="D" u2="Å" k="41" /> +<hkern u1="D" u2="Ä" k="41" /> +<hkern u1="D" u2="Ã" k="41" /> +<hkern u1="D" u2="Â" k="41" /> +<hkern u1="D" u2="Á" k="41" /> +<hkern u1="D" u2="À" k="41" /> +<hkern u1="D" u2="Z" k="20" /> +<hkern u1="D" u2="Y" k="20" /> +<hkern u1="D" u2="X" k="41" /> +<hkern u1="D" u2="W" k="20" /> +<hkern u1="D" u2="V" k="20" /> +<hkern u1="D" u2="T" k="61" /> +<hkern u1="D" u2="A" k="41" /> +<hkern u1="D" u2="." k="82" /> +<hkern u1="D" u2="," k="82" /> +<hkern u1="E" u2="J" k="-123" /> +<hkern u1="F" u2="„" k="123" /> +<hkern u1="F" u2="‚" k="123" /> +<hkern u1="F" u2="Å" k="41" /> +<hkern u1="F" u2="Ä" k="41" /> +<hkern u1="F" u2="Ã" k="41" /> +<hkern u1="F" u2="Â" k="41" /> +<hkern u1="F" u2="Á" k="41" /> +<hkern u1="F" u2="À" k="41" /> +<hkern u1="F" u2="A" k="41" /> +<hkern u1="F" u2="?" k="-41" /> +<hkern u1="F" u2="." k="123" /> +<hkern u1="F" u2="," k="123" /> +<hkern u1="K" u2="Œ" k="41" /> +<hkern u1="K" u2="Ø" k="41" /> +<hkern u1="K" u2="Ö" k="41" /> +<hkern u1="K" u2="Õ" k="41" /> +<hkern u1="K" u2="Ô" k="41" /> +<hkern u1="K" u2="Ó" k="41" /> +<hkern u1="K" u2="Ò" k="41" /> +<hkern u1="K" u2="Ç" k="41" /> +<hkern u1="K" u2="Q" k="41" /> +<hkern u1="K" u2="O" k="41" /> +<hkern u1="K" u2="G" k="41" /> +<hkern u1="K" u2="C" k="41" /> +<hkern u1="L" u2="”" k="164" /> +<hkern u1="L" u2="’" k="164" /> +<hkern u1="L" u2="Ÿ" k="61" /> +<hkern u1="L" u2="Œ" k="41" /> +<hkern u1="L" u2="Ý" k="61" /> +<hkern u1="L" u2="Ü" k="20" /> +<hkern u1="L" u2="Û" k="20" /> +<hkern u1="L" u2="Ú" k="20" /> +<hkern u1="L" u2="Ù" k="20" /> +<hkern u1="L" u2="Ø" k="41" /> +<hkern u1="L" u2="Ö" k="41" /> +<hkern u1="L" u2="Õ" k="41" /> +<hkern u1="L" u2="Ô" k="41" /> +<hkern u1="L" u2="Ó" k="41" /> +<hkern u1="L" u2="Ò" k="41" /> +<hkern u1="L" u2="Ç" k="41" /> +<hkern u1="L" u2="Y" k="61" /> +<hkern u1="L" u2="W" k="41" /> +<hkern u1="L" u2="V" k="41" /> +<hkern u1="L" u2="U" k="20" /> +<hkern u1="L" u2="T" k="41" /> +<hkern u1="L" u2="Q" k="41" /> +<hkern u1="L" u2="O" k="41" /> +<hkern u1="L" u2="G" k="41" /> +<hkern u1="L" u2="C" k="41" /> +<hkern u1="L" u2="'" k="164" /> +<hkern u1="L" u2=""" k="164" /> +<hkern u1="O" u2="„" k="82" /> +<hkern u1="O" u2="‚" k="82" /> +<hkern u1="O" u2="Ÿ" k="20" /> +<hkern u1="O" u2="Ý" k="20" /> +<hkern u1="O" u2="Å" k="41" /> +<hkern u1="O" u2="Ä" k="41" /> +<hkern u1="O" u2="Ã" k="41" /> +<hkern u1="O" u2="Â" k="41" /> +<hkern u1="O" u2="Á" k="41" /> +<hkern u1="O" u2="À" k="41" /> +<hkern u1="O" u2="Z" k="20" /> +<hkern u1="O" u2="Y" k="20" /> +<hkern u1="O" u2="X" k="41" /> +<hkern u1="O" u2="W" k="20" /> +<hkern u1="O" u2="V" k="20" /> +<hkern u1="O" u2="T" k="61" /> +<hkern u1="O" u2="A" k="41" /> +<hkern u1="O" u2="." k="82" /> +<hkern u1="O" u2="," k="82" /> +<hkern u1="P" u2="„" k="266" /> +<hkern u1="P" u2="‚" k="266" /> +<hkern u1="P" u2="Å" k="102" /> +<hkern u1="P" u2="Ä" k="102" /> +<hkern u1="P" u2="Ã" k="102" /> +<hkern u1="P" u2="Â" k="102" /> +<hkern u1="P" u2="Á" k="102" /> +<hkern u1="P" u2="À" k="102" /> +<hkern u1="P" u2="Z" k="20" /> +<hkern u1="P" u2="X" k="41" /> +<hkern u1="P" u2="A" k="102" /> +<hkern u1="P" u2="." k="266" /> +<hkern u1="P" u2="," k="266" /> +<hkern u1="Q" u2="„" k="82" /> +<hkern u1="Q" u2="‚" k="82" /> +<hkern u1="Q" u2="Ÿ" k="20" /> +<hkern u1="Q" u2="Ý" k="20" /> +<hkern u1="Q" u2="Å" k="41" /> +<hkern u1="Q" u2="Ä" k="41" /> +<hkern u1="Q" u2="Ã" k="41" /> +<hkern u1="Q" u2="Â" k="41" /> +<hkern u1="Q" u2="Á" k="41" /> +<hkern u1="Q" u2="À" k="41" /> +<hkern u1="Q" u2="Z" k="20" /> +<hkern u1="Q" u2="Y" k="20" /> +<hkern u1="Q" u2="X" k="41" /> +<hkern u1="Q" u2="W" k="20" /> +<hkern u1="Q" u2="V" k="20" /> +<hkern u1="Q" u2="T" k="61" /> +<hkern u1="Q" u2="A" k="41" /> +<hkern u1="Q" u2="." k="82" /> +<hkern u1="Q" u2="," k="82" /> +<hkern u1="T" u2="„" k="123" /> +<hkern u1="T" u2="‚" k="123" /> +<hkern u1="T" u2="—" k="82" /> +<hkern u1="T" u2="–" k="82" /> +<hkern u1="T" u2="œ" k="143" /> +<hkern u1="T" u2="Œ" k="41" /> +<hkern u1="T" u2="ý" k="41" /> +<hkern u1="T" u2="ü" k="102" /> +<hkern u1="T" u2="û" k="102" /> +<hkern u1="T" u2="ú" k="102" /> +<hkern u1="T" u2="ù" k="102" /> +<hkern u1="T" u2="ø" k="143" /> +<hkern u1="T" u2="ö" k="143" /> +<hkern u1="T" u2="õ" k="143" /> +<hkern u1="T" u2="ô" k="143" /> +<hkern u1="T" u2="ó" k="143" /> +<hkern u1="T" u2="ò" k="143" /> +<hkern u1="T" u2="ë" k="143" /> +<hkern u1="T" u2="ê" k="143" /> +<hkern u1="T" u2="é" k="143" /> +<hkern u1="T" u2="è" k="143" /> +<hkern u1="T" u2="ç" k="143" /> +<hkern u1="T" u2="æ" k="164" /> +<hkern u1="T" u2="å" k="164" /> +<hkern u1="T" u2="ä" k="164" /> +<hkern u1="T" u2="ã" k="164" /> +<hkern u1="T" u2="â" k="164" /> +<hkern u1="T" u2="á" k="164" /> +<hkern u1="T" u2="à" k="143" /> +<hkern u1="T" u2="Ø" k="41" /> +<hkern u1="T" u2="Ö" k="41" /> +<hkern u1="T" u2="Õ" k="41" /> +<hkern u1="T" u2="Ô" k="41" /> +<hkern u1="T" u2="Ó" k="41" /> +<hkern u1="T" u2="Ò" k="41" /> +<hkern u1="T" u2="Ç" k="41" /> +<hkern u1="T" u2="Å" k="143" /> +<hkern u1="T" u2="Ä" k="143" /> +<hkern u1="T" u2="Ã" k="143" /> +<hkern u1="T" u2="Â" k="143" /> +<hkern u1="T" u2="Á" k="143" /> +<hkern u1="T" u2="À" k="143" /> +<hkern u1="T" u2="z" k="82" /> +<hkern u1="T" u2="y" k="41" /> +<hkern u1="T" u2="x" k="41" /> +<hkern u1="T" u2="w" k="41" /> +<hkern u1="T" u2="v" k="41" /> +<hkern u1="T" u2="u" k="102" /> +<hkern u1="T" u2="s" k="123" /> +<hkern u1="T" u2="r" k="102" /> +<hkern u1="T" u2="q" k="143" /> +<hkern u1="T" u2="p" k="102" /> +<hkern u1="T" u2="o" k="143" /> +<hkern u1="T" u2="n" k="102" /> +<hkern u1="T" u2="m" k="102" /> +<hkern u1="T" u2="g" k="143" /> +<hkern u1="T" u2="e" k="143" /> +<hkern u1="T" u2="d" k="143" /> +<hkern u1="T" u2="c" k="143" /> +<hkern u1="T" u2="a" k="164" /> +<hkern u1="T" u2="T" k="-41" /> +<hkern u1="T" u2="Q" k="41" /> +<hkern u1="T" u2="O" k="41" /> +<hkern u1="T" u2="G" k="41" /> +<hkern u1="T" u2="C" k="41" /> +<hkern u1="T" u2="A" k="143" /> +<hkern u1="T" u2="?" k="-41" /> +<hkern u1="T" u2="." k="123" /> +<hkern u1="T" u2="-" k="82" /> +<hkern u1="T" u2="," k="123" /> +<hkern u1="U" u2="„" k="41" /> +<hkern u1="U" u2="‚" k="41" /> +<hkern u1="U" u2="Å" k="20" /> +<hkern u1="U" u2="Ä" k="20" /> +<hkern u1="U" u2="Ã" k="20" /> +<hkern u1="U" u2="Â" k="20" /> +<hkern u1="U" u2="Á" k="20" /> +<hkern u1="U" u2="À" k="20" /> +<hkern u1="U" u2="A" k="20" /> +<hkern u1="U" u2="." k="41" /> +<hkern u1="U" u2="," k="41" /> +<hkern u1="V" u2="„" k="102" /> +<hkern u1="V" u2="‚" k="102" /> +<hkern u1="V" u2="œ" k="41" /> +<hkern u1="V" u2="Œ" k="20" /> +<hkern u1="V" u2="ü" k="20" /> +<hkern u1="V" u2="û" k="20" /> +<hkern u1="V" u2="ú" k="20" /> +<hkern u1="V" u2="ù" k="20" /> +<hkern u1="V" u2="ø" k="41" /> +<hkern u1="V" u2="ö" k="41" /> +<hkern u1="V" u2="õ" k="41" /> +<hkern u1="V" u2="ô" k="41" /> +<hkern u1="V" u2="ó" k="41" /> +<hkern u1="V" u2="ò" k="41" /> +<hkern u1="V" u2="ë" k="41" /> +<hkern u1="V" u2="ê" k="41" /> +<hkern u1="V" u2="é" k="41" /> +<hkern u1="V" u2="è" k="41" /> +<hkern u1="V" u2="ç" k="41" /> +<hkern u1="V" u2="æ" k="41" /> +<hkern u1="V" u2="å" k="41" /> +<hkern u1="V" u2="ä" k="41" /> +<hkern u1="V" u2="ã" k="41" /> +<hkern u1="V" u2="â" k="41" /> +<hkern u1="V" u2="á" k="41" /> +<hkern u1="V" u2="à" k="41" /> +<hkern u1="V" u2="Ø" k="20" /> +<hkern u1="V" u2="Ö" k="20" /> +<hkern u1="V" u2="Õ" k="20" /> +<hkern u1="V" u2="Ô" k="20" /> +<hkern u1="V" u2="Ó" k="20" /> +<hkern u1="V" u2="Ò" k="20" /> +<hkern u1="V" u2="Ç" k="20" /> +<hkern u1="V" u2="Å" k="82" /> +<hkern u1="V" u2="Ä" k="82" /> +<hkern u1="V" u2="Ã" k="82" /> +<hkern u1="V" u2="Â" k="82" /> +<hkern u1="V" u2="Á" k="82" /> +<hkern u1="V" u2="À" k="82" /> +<hkern u1="V" u2="u" k="20" /> +<hkern u1="V" u2="s" k="20" /> +<hkern u1="V" u2="r" k="20" /> +<hkern u1="V" u2="q" k="41" /> +<hkern u1="V" u2="p" k="20" /> +<hkern u1="V" u2="o" k="41" /> +<hkern u1="V" u2="n" k="20" /> +<hkern u1="V" u2="m" k="20" /> +<hkern u1="V" u2="g" k="20" /> +<hkern u1="V" u2="e" k="41" /> +<hkern u1="V" u2="d" k="41" /> +<hkern u1="V" u2="c" k="41" /> +<hkern u1="V" u2="a" k="41" /> +<hkern u1="V" u2="Q" k="20" /> +<hkern u1="V" u2="O" k="20" /> +<hkern u1="V" u2="G" k="20" /> +<hkern u1="V" u2="C" k="20" /> +<hkern u1="V" u2="A" k="82" /> +<hkern u1="V" u2="?" k="-41" /> +<hkern u1="V" u2="." k="102" /> +<hkern u1="V" u2="," k="102" /> +<hkern u1="W" u2="„" k="102" /> +<hkern u1="W" u2="‚" k="102" /> +<hkern u1="W" u2="œ" k="41" /> +<hkern u1="W" u2="Œ" k="20" /> +<hkern u1="W" u2="ü" k="20" /> +<hkern u1="W" u2="û" k="20" /> +<hkern u1="W" u2="ú" k="20" /> +<hkern u1="W" u2="ù" k="20" /> +<hkern u1="W" u2="ø" k="41" /> +<hkern u1="W" u2="ö" k="41" /> +<hkern u1="W" u2="õ" k="41" /> +<hkern u1="W" u2="ô" k="41" /> +<hkern u1="W" u2="ó" k="41" /> +<hkern u1="W" u2="ò" k="41" /> +<hkern u1="W" u2="ë" k="41" /> +<hkern u1="W" u2="ê" k="41" /> +<hkern u1="W" u2="é" k="41" /> +<hkern u1="W" u2="è" k="41" /> +<hkern u1="W" u2="ç" k="41" /> +<hkern u1="W" u2="æ" k="41" /> +<hkern u1="W" u2="å" k="41" /> +<hkern u1="W" u2="ä" k="41" /> +<hkern u1="W" u2="ã" k="41" /> +<hkern u1="W" u2="â" k="41" /> +<hkern u1="W" u2="á" k="41" /> +<hkern u1="W" u2="à" k="41" /> +<hkern u1="W" u2="Ø" k="20" /> +<hkern u1="W" u2="Ö" k="20" /> +<hkern u1="W" u2="Õ" k="20" /> +<hkern u1="W" u2="Ô" k="20" /> +<hkern u1="W" u2="Ó" k="20" /> +<hkern u1="W" u2="Ò" k="20" /> +<hkern u1="W" u2="Ç" k="20" /> +<hkern u1="W" u2="Å" k="82" /> +<hkern u1="W" u2="Ä" k="82" /> +<hkern u1="W" u2="Ã" k="82" /> +<hkern u1="W" u2="Â" k="82" /> +<hkern u1="W" u2="Á" k="82" /> +<hkern u1="W" u2="À" k="82" /> +<hkern u1="W" u2="u" k="20" /> +<hkern u1="W" u2="s" k="20" /> +<hkern u1="W" u2="r" k="20" /> +<hkern u1="W" u2="q" k="41" /> +<hkern u1="W" u2="p" k="20" /> +<hkern u1="W" u2="o" k="41" /> +<hkern u1="W" u2="n" k="20" /> +<hkern u1="W" u2="m" k="20" /> +<hkern u1="W" u2="g" k="20" /> +<hkern u1="W" u2="e" k="41" /> +<hkern u1="W" u2="d" k="41" /> +<hkern u1="W" u2="c" k="41" /> +<hkern u1="W" u2="a" k="41" /> +<hkern u1="W" u2="Q" k="20" /> +<hkern u1="W" u2="O" k="20" /> +<hkern u1="W" u2="G" k="20" /> +<hkern u1="W" u2="C" k="20" /> +<hkern u1="W" u2="A" k="82" /> +<hkern u1="W" u2="?" k="-41" /> +<hkern u1="W" u2="." k="102" /> +<hkern u1="W" u2="," k="102" /> +<hkern u1="X" u2="Œ" k="41" /> +<hkern u1="X" u2="Ø" k="41" /> +<hkern u1="X" u2="Ö" k="41" /> +<hkern u1="X" u2="Õ" k="41" /> +<hkern u1="X" u2="Ô" k="41" /> +<hkern u1="X" u2="Ó" k="41" /> +<hkern u1="X" u2="Ò" k="41" /> +<hkern u1="X" u2="Ç" k="41" /> +<hkern u1="X" u2="Q" k="41" /> +<hkern u1="X" u2="O" k="41" /> +<hkern u1="X" u2="G" k="41" /> +<hkern u1="X" u2="C" k="41" /> +<hkern u1="Y" u2="„" k="123" /> +<hkern u1="Y" u2="‚" k="123" /> +<hkern u1="Y" u2="œ" k="102" /> +<hkern u1="Y" u2="Œ" k="41" /> +<hkern u1="Y" u2="ü" k="61" /> +<hkern u1="Y" u2="û" k="61" /> +<hkern u1="Y" u2="ú" k="61" /> +<hkern u1="Y" u2="ù" k="61" /> +<hkern u1="Y" u2="ø" k="102" /> +<hkern u1="Y" u2="ö" k="102" /> +<hkern u1="Y" u2="õ" k="102" /> +<hkern u1="Y" u2="ô" k="102" /> +<hkern u1="Y" u2="ó" k="102" /> +<hkern u1="Y" u2="ò" k="102" /> +<hkern u1="Y" u2="ë" k="102" /> +<hkern u1="Y" u2="ê" k="102" /> +<hkern u1="Y" u2="é" k="102" /> +<hkern u1="Y" u2="è" k="102" /> +<hkern u1="Y" u2="ç" k="102" /> +<hkern u1="Y" u2="æ" k="102" /> +<hkern u1="Y" u2="å" k="102" /> +<hkern u1="Y" u2="ä" k="102" /> +<hkern u1="Y" u2="ã" k="102" /> +<hkern u1="Y" u2="â" k="102" /> +<hkern u1="Y" u2="á" k="102" /> +<hkern u1="Y" u2="à" k="102" /> +<hkern u1="Y" u2="Ø" k="41" /> +<hkern u1="Y" u2="Ö" k="41" /> +<hkern u1="Y" u2="Õ" k="41" /> +<hkern u1="Y" u2="Ô" k="41" /> +<hkern u1="Y" u2="Ó" k="41" /> +<hkern u1="Y" u2="Ò" k="41" /> +<hkern u1="Y" u2="Ç" k="41" /> +<hkern u1="Y" u2="Å" k="123" /> +<hkern u1="Y" u2="Ä" k="123" /> +<hkern u1="Y" u2="Ã" k="123" /> +<hkern u1="Y" u2="Â" k="123" /> +<hkern u1="Y" u2="Á" k="123" /> +<hkern u1="Y" u2="À" k="123" /> +<hkern u1="Y" u2="z" k="41" /> +<hkern u1="Y" u2="u" k="61" /> +<hkern u1="Y" u2="s" k="82" /> +<hkern u1="Y" u2="r" k="61" /> +<hkern u1="Y" u2="q" k="102" /> +<hkern u1="Y" u2="p" k="61" /> +<hkern u1="Y" u2="o" k="102" /> +<hkern u1="Y" u2="n" k="61" /> +<hkern u1="Y" u2="m" k="61" /> +<hkern u1="Y" u2="g" k="41" /> +<hkern u1="Y" u2="e" k="102" /> +<hkern u1="Y" u2="d" k="102" /> +<hkern u1="Y" u2="c" k="102" /> +<hkern u1="Y" u2="a" k="102" /> +<hkern u1="Y" u2="Q" k="41" /> +<hkern u1="Y" u2="O" k="41" /> +<hkern u1="Y" u2="G" k="41" /> +<hkern u1="Y" u2="C" k="41" /> +<hkern u1="Y" u2="A" k="123" /> +<hkern u1="Y" u2="?" k="-41" /> +<hkern u1="Y" u2="." k="123" /> +<hkern u1="Y" u2="," k="123" /> +<hkern u1="Z" u2="Œ" k="20" /> +<hkern u1="Z" u2="Ø" k="20" /> +<hkern u1="Z" u2="Ö" k="20" /> +<hkern u1="Z" u2="Õ" k="20" /> +<hkern u1="Z" u2="Ô" k="20" /> +<hkern u1="Z" u2="Ó" k="20" /> +<hkern u1="Z" u2="Ò" k="20" /> +<hkern u1="Z" u2="Ç" k="20" /> +<hkern u1="Z" u2="Q" k="20" /> +<hkern u1="Z" u2="O" k="20" /> +<hkern u1="Z" u2="G" k="20" /> +<hkern u1="Z" u2="C" k="20" /> +<hkern u1="[" u2="J" k="-184" /> +<hkern u1="a" u2="”" k="20" /> +<hkern u1="a" u2="’" k="20" /> +<hkern u1="a" u2="'" k="20" /> +<hkern u1="a" u2=""" k="20" /> +<hkern u1="b" u2="”" k="20" /> +<hkern u1="b" u2="’" k="20" /> +<hkern u1="b" u2="ý" k="41" /> +<hkern u1="b" u2="z" k="20" /> +<hkern u1="b" u2="y" k="41" /> +<hkern u1="b" u2="x" k="41" /> +<hkern u1="b" u2="w" k="41" /> +<hkern u1="b" u2="v" k="41" /> +<hkern u1="b" u2="'" k="20" /> +<hkern u1="b" u2=""" k="20" /> +<hkern u1="c" u2="”" k="-41" /> +<hkern u1="c" u2="’" k="-41" /> +<hkern u1="c" u2="'" k="-41" /> +<hkern u1="c" u2=""" k="-41" /> +<hkern u1="e" u2="”" k="20" /> +<hkern u1="e" u2="’" k="20" /> +<hkern u1="e" u2="ý" k="41" /> +<hkern u1="e" u2="z" k="20" /> +<hkern u1="e" u2="y" k="41" /> +<hkern u1="e" u2="x" k="41" /> +<hkern u1="e" u2="w" k="41" /> +<hkern u1="e" u2="v" k="41" /> +<hkern u1="e" u2="'" k="20" /> +<hkern u1="e" u2=""" k="20" /> +<hkern u1="f" u2="”" k="-123" /> +<hkern u1="f" u2="’" k="-123" /> +<hkern u1="f" u2="'" k="-123" /> +<hkern u1="f" u2=""" k="-123" /> +<hkern u1="h" u2="”" k="20" /> +<hkern u1="h" u2="’" k="20" /> +<hkern u1="h" u2="'" k="20" /> +<hkern u1="h" u2=""" k="20" /> +<hkern u1="k" u2="œ" k="41" /> +<hkern u1="k" u2="ø" k="41" /> +<hkern u1="k" u2="ö" k="41" /> +<hkern u1="k" u2="õ" k="41" /> +<hkern u1="k" u2="ô" k="41" /> +<hkern u1="k" u2="ó" k="41" /> +<hkern u1="k" u2="ò" k="41" /> +<hkern u1="k" u2="ë" k="41" /> +<hkern u1="k" u2="ê" k="41" /> +<hkern u1="k" u2="é" k="41" /> +<hkern u1="k" u2="è" k="41" /> +<hkern u1="k" u2="ç" k="41" /> +<hkern u1="k" u2="à" k="41" /> +<hkern u1="k" u2="q" k="41" /> +<hkern u1="k" u2="o" k="41" /> +<hkern u1="k" u2="e" k="41" /> +<hkern u1="k" u2="d" k="41" /> +<hkern u1="k" u2="c" k="41" /> +<hkern u1="m" u2="”" k="20" /> +<hkern u1="m" u2="’" k="20" /> +<hkern u1="m" u2="'" k="20" /> +<hkern u1="m" u2=""" k="20" /> +<hkern u1="n" u2="”" k="20" /> +<hkern u1="n" u2="’" k="20" /> +<hkern u1="n" u2="'" k="20" /> +<hkern u1="n" u2=""" k="20" /> +<hkern u1="o" u2="”" k="20" /> +<hkern u1="o" u2="’" k="20" /> +<hkern u1="o" u2="ý" k="41" /> +<hkern u1="o" u2="z" k="20" /> +<hkern u1="o" u2="y" k="41" /> +<hkern u1="o" u2="x" k="41" /> +<hkern u1="o" u2="w" k="41" /> +<hkern u1="o" u2="v" k="41" /> +<hkern u1="o" u2="'" k="20" /> +<hkern u1="o" u2=""" k="20" /> +<hkern u1="p" u2="”" k="20" /> +<hkern u1="p" u2="’" k="20" /> +<hkern u1="p" u2="ý" k="41" /> +<hkern u1="p" u2="z" k="20" /> +<hkern u1="p" u2="y" k="41" /> +<hkern u1="p" u2="x" k="41" /> +<hkern u1="p" u2="w" k="41" /> +<hkern u1="p" u2="v" k="41" /> +<hkern u1="p" u2="'" k="20" /> +<hkern u1="p" u2=""" k="20" /> +<hkern u1="r" u2="”" k="-82" /> +<hkern u1="r" u2="’" k="-82" /> +<hkern u1="r" u2="œ" k="41" /> +<hkern u1="r" u2="ø" k="41" /> +<hkern u1="r" u2="ö" k="41" /> +<hkern u1="r" u2="õ" k="41" /> +<hkern u1="r" u2="ô" k="41" /> +<hkern u1="r" u2="ó" k="41" /> +<hkern u1="r" u2="ò" k="41" /> +<hkern u1="r" u2="ë" k="41" /> +<hkern u1="r" u2="ê" k="41" /> +<hkern u1="r" u2="é" k="41" /> +<hkern u1="r" u2="è" k="41" /> +<hkern u1="r" u2="ç" k="41" /> +<hkern u1="r" u2="æ" k="41" /> +<hkern u1="r" u2="å" k="41" /> +<hkern u1="r" u2="ä" k="41" /> +<hkern u1="r" u2="ã" k="41" /> +<hkern u1="r" u2="â" k="41" /> +<hkern u1="r" u2="á" k="41" /> +<hkern u1="r" u2="à" k="41" /> +<hkern u1="r" u2="q" k="41" /> +<hkern u1="r" u2="o" k="41" /> +<hkern u1="r" u2="g" k="20" /> +<hkern u1="r" u2="e" k="41" /> +<hkern u1="r" u2="d" k="41" /> +<hkern u1="r" u2="c" k="41" /> +<hkern u1="r" u2="a" k="41" /> +<hkern u1="r" u2="'" k="-82" /> +<hkern u1="r" u2=""" k="-82" /> +<hkern u1="t" u2="”" k="-41" /> +<hkern u1="t" u2="’" k="-41" /> +<hkern u1="t" u2="'" k="-41" /> +<hkern u1="t" u2=""" k="-41" /> +<hkern u1="v" u2="„" k="82" /> +<hkern u1="v" u2="”" k="-82" /> +<hkern u1="v" u2="‚" k="82" /> +<hkern u1="v" u2="’" k="-82" /> +<hkern u1="v" u2="?" k="-41" /> +<hkern u1="v" u2="." k="82" /> +<hkern u1="v" u2="," k="82" /> +<hkern u1="v" u2="'" k="-82" /> +<hkern u1="v" u2=""" k="-82" /> +<hkern u1="w" u2="„" k="82" /> +<hkern u1="w" u2="”" k="-82" /> +<hkern u1="w" u2="‚" k="82" /> +<hkern u1="w" u2="’" k="-82" /> +<hkern u1="w" u2="?" k="-41" /> +<hkern u1="w" u2="." k="82" /> +<hkern u1="w" u2="," k="82" /> +<hkern u1="w" u2="'" k="-82" /> +<hkern u1="w" u2=""" k="-82" /> +<hkern u1="x" u2="œ" k="41" /> +<hkern u1="x" u2="ø" k="41" /> +<hkern u1="x" u2="ö" k="41" /> +<hkern u1="x" u2="õ" k="41" /> +<hkern u1="x" u2="ô" k="41" /> +<hkern u1="x" u2="ó" k="41" /> +<hkern u1="x" u2="ò" k="41" /> +<hkern u1="x" u2="ë" k="41" /> +<hkern u1="x" u2="ê" k="41" /> +<hkern u1="x" u2="é" k="41" /> +<hkern u1="x" u2="è" k="41" /> +<hkern u1="x" u2="ç" k="41" /> +<hkern u1="x" u2="à" k="41" /> +<hkern u1="x" u2="q" k="41" /> +<hkern u1="x" u2="o" k="41" /> +<hkern u1="x" u2="e" k="41" /> +<hkern u1="x" u2="d" k="41" /> +<hkern u1="x" u2="c" k="41" /> +<hkern u1="y" u2="„" k="82" /> +<hkern u1="y" u2="”" k="-82" /> +<hkern u1="y" u2="‚" k="82" /> +<hkern u1="y" u2="’" k="-82" /> +<hkern u1="y" u2="?" k="-41" /> +<hkern u1="y" u2="." k="82" /> +<hkern u1="y" u2="," k="82" /> +<hkern u1="y" u2="'" k="-82" /> +<hkern u1="y" u2=""" k="-82" /> +<hkern u1="{" u2="J" k="-184" /> +<hkern u1="À" u2="”" k="143" /> +<hkern u1="À" u2="’" k="143" /> +<hkern u1="À" u2="Ÿ" k="123" /> +<hkern u1="À" u2="Œ" k="41" /> +<hkern u1="À" u2="Ý" k="123" /> +<hkern u1="À" u2="Ø" k="41" /> +<hkern u1="À" u2="Ö" k="41" /> +<hkern u1="À" u2="Õ" k="41" /> +<hkern u1="À" u2="Ô" k="41" /> +<hkern u1="À" u2="Ó" k="41" /> +<hkern u1="À" u2="Ò" k="41" /> +<hkern u1="À" u2="Ç" k="41" /> +<hkern u1="À" u2="Y" k="123" /> +<hkern u1="À" u2="W" k="82" /> +<hkern u1="À" u2="V" k="82" /> +<hkern u1="À" u2="T" k="143" /> +<hkern u1="À" u2="Q" k="41" /> +<hkern u1="À" u2="O" k="41" /> +<hkern u1="À" u2="J" k="-266" /> +<hkern u1="À" u2="G" k="41" /> +<hkern u1="À" u2="C" k="41" /> +<hkern u1="À" u2="'" k="143" /> +<hkern u1="À" u2=""" k="143" /> +<hkern u1="Á" u2="”" k="143" /> +<hkern u1="Á" u2="’" k="143" /> +<hkern u1="Á" u2="Ÿ" k="123" /> +<hkern u1="Á" u2="Œ" k="41" /> +<hkern u1="Á" u2="Ý" k="123" /> +<hkern u1="Á" u2="Ø" k="41" /> +<hkern u1="Á" u2="Ö" k="41" /> +<hkern u1="Á" u2="Õ" k="41" /> +<hkern u1="Á" u2="Ô" k="41" /> +<hkern u1="Á" u2="Ó" k="41" /> +<hkern u1="Á" u2="Ò" k="41" /> +<hkern u1="Á" u2="Ç" k="41" /> +<hkern u1="Á" u2="Y" k="123" /> +<hkern u1="Á" u2="W" k="82" /> +<hkern u1="Á" u2="V" k="82" /> +<hkern u1="Á" u2="T" k="143" /> +<hkern u1="Á" u2="Q" k="41" /> +<hkern u1="Á" u2="O" k="41" /> +<hkern u1="Á" u2="J" k="-266" /> +<hkern u1="Á" u2="G" k="41" /> +<hkern u1="Á" u2="C" k="41" /> +<hkern u1="Á" u2="'" k="143" /> +<hkern u1="Á" u2=""" k="143" /> +<hkern u1="Â" u2="”" k="143" /> +<hkern u1="Â" u2="’" k="143" /> +<hkern u1="Â" u2="Ÿ" k="123" /> +<hkern u1="Â" u2="Œ" k="41" /> +<hkern u1="Â" u2="Ý" k="123" /> +<hkern u1="Â" u2="Ø" k="41" /> +<hkern u1="Â" u2="Ö" k="41" /> +<hkern u1="Â" u2="Õ" k="41" /> +<hkern u1="Â" u2="Ô" k="41" /> +<hkern u1="Â" u2="Ó" k="41" /> +<hkern u1="Â" u2="Ò" k="41" /> +<hkern u1="Â" u2="Ç" k="41" /> +<hkern u1="Â" u2="Y" k="123" /> +<hkern u1="Â" u2="W" k="82" /> +<hkern u1="Â" u2="V" k="82" /> +<hkern u1="Â" u2="T" k="143" /> +<hkern u1="Â" u2="Q" k="41" /> +<hkern u1="Â" u2="O" k="41" /> +<hkern u1="Â" u2="J" k="-266" /> +<hkern u1="Â" u2="G" k="41" /> +<hkern u1="Â" u2="C" k="41" /> +<hkern u1="Â" u2="'" k="143" /> +<hkern u1="Â" u2=""" k="143" /> +<hkern u1="Ã" u2="”" k="143" /> +<hkern u1="Ã" u2="’" k="143" /> +<hkern u1="Ã" u2="Ÿ" k="123" /> +<hkern u1="Ã" u2="Œ" k="41" /> +<hkern u1="Ã" u2="Ý" k="123" /> +<hkern u1="Ã" u2="Ø" k="41" /> +<hkern u1="Ã" u2="Ö" k="41" /> +<hkern u1="Ã" u2="Õ" k="41" /> +<hkern u1="Ã" u2="Ô" k="41" /> +<hkern u1="Ã" u2="Ó" k="41" /> +<hkern u1="Ã" u2="Ò" k="41" /> +<hkern u1="Ã" u2="Ç" k="41" /> +<hkern u1="Ã" u2="Y" k="123" /> +<hkern u1="Ã" u2="W" k="82" /> +<hkern u1="Ã" u2="V" k="82" /> +<hkern u1="Ã" u2="T" k="143" /> +<hkern u1="Ã" u2="Q" k="41" /> +<hkern u1="Ã" u2="O" k="41" /> +<hkern u1="Ã" u2="J" k="-266" /> +<hkern u1="Ã" u2="G" k="41" /> +<hkern u1="Ã" u2="C" k="41" /> +<hkern u1="Ã" u2="'" k="143" /> +<hkern u1="Ã" u2=""" k="143" /> +<hkern u1="Ä" u2="”" k="143" /> +<hkern u1="Ä" u2="’" k="143" /> +<hkern u1="Ä" u2="Ÿ" k="123" /> +<hkern u1="Ä" u2="Œ" k="41" /> +<hkern u1="Ä" u2="Ý" k="123" /> +<hkern u1="Ä" u2="Ø" k="41" /> +<hkern u1="Ä" u2="Ö" k="41" /> +<hkern u1="Ä" u2="Õ" k="41" /> +<hkern u1="Ä" u2="Ô" k="41" /> +<hkern u1="Ä" u2="Ó" k="41" /> +<hkern u1="Ä" u2="Ò" k="41" /> +<hkern u1="Ä" u2="Ç" k="41" /> +<hkern u1="Ä" u2="Y" k="123" /> +<hkern u1="Ä" u2="W" k="82" /> +<hkern u1="Ä" u2="V" k="82" /> +<hkern u1="Ä" u2="T" k="143" /> +<hkern u1="Ä" u2="Q" k="41" /> +<hkern u1="Ä" u2="O" k="41" /> +<hkern u1="Ä" u2="J" k="-266" /> +<hkern u1="Ä" u2="G" k="41" /> +<hkern u1="Ä" u2="C" k="41" /> +<hkern u1="Ä" u2="'" k="143" /> +<hkern u1="Ä" u2=""" k="143" /> +<hkern u1="Å" u2="”" k="143" /> +<hkern u1="Å" u2="’" k="143" /> +<hkern u1="Å" u2="Ÿ" k="123" /> +<hkern u1="Å" u2="Œ" k="41" /> +<hkern u1="Å" u2="Ý" k="123" /> +<hkern u1="Å" u2="Ø" k="41" /> +<hkern u1="Å" u2="Ö" k="41" /> +<hkern u1="Å" u2="Õ" k="41" /> +<hkern u1="Å" u2="Ô" k="41" /> +<hkern u1="Å" u2="Ó" k="41" /> +<hkern u1="Å" u2="Ò" k="41" /> +<hkern u1="Å" u2="Ç" k="41" /> +<hkern u1="Å" u2="Y" k="123" /> +<hkern u1="Å" u2="W" k="82" /> +<hkern u1="Å" u2="V" k="82" /> +<hkern u1="Å" u2="T" k="143" /> +<hkern u1="Å" u2="Q" k="41" /> +<hkern u1="Å" u2="O" k="41" /> +<hkern u1="Å" u2="J" k="-266" /> +<hkern u1="Å" u2="G" k="41" /> +<hkern u1="Å" u2="C" k="41" /> +<hkern u1="Å" u2="'" k="143" /> +<hkern u1="Å" u2=""" k="143" /> +<hkern u1="Æ" u2="J" k="-123" /> +<hkern u1="Ç" u2="Œ" k="41" /> +<hkern u1="Ç" u2="Ø" k="41" /> +<hkern u1="Ç" u2="Ö" k="41" /> +<hkern u1="Ç" u2="Õ" k="41" /> +<hkern u1="Ç" u2="Ô" k="41" /> +<hkern u1="Ç" u2="Ó" k="41" /> +<hkern u1="Ç" u2="Ò" k="41" /> +<hkern u1="Ç" u2="Ç" k="41" /> +<hkern u1="Ç" u2="Q" k="41" /> +<hkern u1="Ç" u2="O" k="41" /> +<hkern u1="Ç" u2="G" k="41" /> +<hkern u1="Ç" u2="C" k="41" /> +<hkern u1="È" u2="J" k="-123" /> +<hkern u1="É" u2="J" k="-123" /> +<hkern u1="Ê" u2="J" k="-123" /> +<hkern u1="Ë" u2="J" k="-123" /> +<hkern u1="Ð" u2="„" k="82" /> +<hkern u1="Ð" u2="‚" k="82" /> +<hkern u1="Ð" u2="Ÿ" k="20" /> +<hkern u1="Ð" u2="Ý" k="20" /> +<hkern u1="Ð" u2="Å" k="41" /> +<hkern u1="Ð" u2="Ä" k="41" /> +<hkern u1="Ð" u2="Ã" k="41" /> +<hkern u1="Ð" u2="Â" k="41" /> +<hkern u1="Ð" u2="Á" k="41" /> +<hkern u1="Ð" u2="À" k="41" /> +<hkern u1="Ð" u2="Z" k="20" /> +<hkern u1="Ð" u2="Y" k="20" /> +<hkern u1="Ð" u2="X" k="41" /> +<hkern u1="Ð" u2="W" k="20" /> +<hkern u1="Ð" u2="V" k="20" /> +<hkern u1="Ð" u2="T" k="61" /> +<hkern u1="Ð" u2="A" k="41" /> +<hkern u1="Ð" u2="." k="82" /> +<hkern u1="Ð" u2="," k="82" /> +<hkern u1="Ò" u2="„" k="82" /> +<hkern u1="Ò" u2="‚" k="82" /> +<hkern u1="Ò" u2="Ÿ" k="20" /> +<hkern u1="Ò" u2="Ý" k="20" /> +<hkern u1="Ò" u2="Å" k="41" /> +<hkern u1="Ò" u2="Ä" k="41" /> +<hkern u1="Ò" u2="Ã" k="41" /> +<hkern u1="Ò" u2="Â" k="41" /> +<hkern u1="Ò" u2="Á" k="41" /> +<hkern u1="Ò" u2="À" k="41" /> +<hkern u1="Ò" u2="Z" k="20" /> +<hkern u1="Ò" u2="Y" k="20" /> +<hkern u1="Ò" u2="X" k="41" /> +<hkern u1="Ò" u2="W" k="20" /> +<hkern u1="Ò" u2="V" k="20" /> +<hkern u1="Ò" u2="T" k="61" /> +<hkern u1="Ò" u2="A" k="41" /> +<hkern u1="Ò" u2="." k="82" /> +<hkern u1="Ò" u2="," k="82" /> +<hkern u1="Ó" u2="„" k="82" /> +<hkern u1="Ó" u2="‚" k="82" /> +<hkern u1="Ó" u2="Ÿ" k="20" /> +<hkern u1="Ó" u2="Ý" k="20" /> +<hkern u1="Ó" u2="Å" k="41" /> +<hkern u1="Ó" u2="Ä" k="41" /> +<hkern u1="Ó" u2="Ã" k="41" /> +<hkern u1="Ó" u2="Â" k="41" /> +<hkern u1="Ó" u2="Á" k="41" /> +<hkern u1="Ó" u2="À" k="41" /> +<hkern u1="Ó" u2="Z" k="20" /> +<hkern u1="Ó" u2="Y" k="20" /> +<hkern u1="Ó" u2="X" k="41" /> +<hkern u1="Ó" u2="W" k="20" /> +<hkern u1="Ó" u2="V" k="20" /> +<hkern u1="Ó" u2="T" k="61" /> +<hkern u1="Ó" u2="A" k="41" /> +<hkern u1="Ó" u2="." k="82" /> +<hkern u1="Ó" u2="," k="82" /> +<hkern u1="Ô" u2="„" k="82" /> +<hkern u1="Ô" u2="‚" k="82" /> +<hkern u1="Ô" u2="Ÿ" k="20" /> +<hkern u1="Ô" u2="Ý" k="20" /> +<hkern u1="Ô" u2="Å" k="41" /> +<hkern u1="Ô" u2="Ä" k="41" /> +<hkern u1="Ô" u2="Ã" k="41" /> +<hkern u1="Ô" u2="Â" k="41" /> +<hkern u1="Ô" u2="Á" k="41" /> +<hkern u1="Ô" u2="À" k="41" /> +<hkern u1="Ô" u2="Z" k="20" /> +<hkern u1="Ô" u2="Y" k="20" /> +<hkern u1="Ô" u2="X" k="41" /> +<hkern u1="Ô" u2="W" k="20" /> +<hkern u1="Ô" u2="V" k="20" /> +<hkern u1="Ô" u2="T" k="61" /> +<hkern u1="Ô" u2="A" k="41" /> +<hkern u1="Ô" u2="." k="82" /> +<hkern u1="Ô" u2="," k="82" /> +<hkern u1="Õ" u2="„" k="82" /> +<hkern u1="Õ" u2="‚" k="82" /> +<hkern u1="Õ" u2="Ÿ" k="20" /> +<hkern u1="Õ" u2="Ý" k="20" /> +<hkern u1="Õ" u2="Å" k="41" /> +<hkern u1="Õ" u2="Ä" k="41" /> +<hkern u1="Õ" u2="Ã" k="41" /> +<hkern u1="Õ" u2="Â" k="41" /> +<hkern u1="Õ" u2="Á" k="41" /> +<hkern u1="Õ" u2="À" k="41" /> +<hkern u1="Õ" u2="Z" k="20" /> +<hkern u1="Õ" u2="Y" k="20" /> +<hkern u1="Õ" u2="X" k="41" /> +<hkern u1="Õ" u2="W" k="20" /> +<hkern u1="Õ" u2="V" k="20" /> +<hkern u1="Õ" u2="T" k="61" /> +<hkern u1="Õ" u2="A" k="41" /> +<hkern u1="Õ" u2="." k="82" /> +<hkern u1="Õ" u2="," k="82" /> +<hkern u1="Ö" u2="„" k="82" /> +<hkern u1="Ö" u2="‚" k="82" /> +<hkern u1="Ö" u2="Ÿ" k="20" /> +<hkern u1="Ö" u2="Ý" k="20" /> +<hkern u1="Ö" u2="Å" k="41" /> +<hkern u1="Ö" u2="Ä" k="41" /> +<hkern u1="Ö" u2="Ã" k="41" /> +<hkern u1="Ö" u2="Â" k="41" /> +<hkern u1="Ö" u2="Á" k="41" /> +<hkern u1="Ö" u2="À" k="41" /> +<hkern u1="Ö" u2="Z" k="20" /> +<hkern u1="Ö" u2="Y" k="20" /> +<hkern u1="Ö" u2="X" k="41" /> +<hkern u1="Ö" u2="W" k="20" /> +<hkern u1="Ö" u2="V" k="20" /> +<hkern u1="Ö" u2="T" k="61" /> +<hkern u1="Ö" u2="A" k="41" /> +<hkern u1="Ö" u2="." k="82" /> +<hkern u1="Ö" u2="," k="82" /> +<hkern u1="Ø" u2="„" k="82" /> +<hkern u1="Ø" u2="‚" k="82" /> +<hkern u1="Ø" u2="Ÿ" k="20" /> +<hkern u1="Ø" u2="Ý" k="20" /> +<hkern u1="Ø" u2="Å" k="41" /> +<hkern u1="Ø" u2="Ä" k="41" /> +<hkern u1="Ø" u2="Ã" k="41" /> +<hkern u1="Ø" u2="Â" k="41" /> +<hkern u1="Ø" u2="Á" k="41" /> +<hkern u1="Ø" u2="À" k="41" /> +<hkern u1="Ø" u2="Z" k="20" /> +<hkern u1="Ø" u2="Y" k="20" /> +<hkern u1="Ø" u2="X" k="41" /> +<hkern u1="Ø" u2="W" k="20" /> +<hkern u1="Ø" u2="V" k="20" /> +<hkern u1="Ø" u2="T" k="61" /> +<hkern u1="Ø" u2="A" k="41" /> +<hkern u1="Ø" u2="." k="82" /> +<hkern u1="Ø" u2="," k="82" /> +<hkern u1="Ù" u2="„" k="41" /> +<hkern u1="Ù" u2="‚" k="41" /> +<hkern u1="Ù" u2="Å" k="20" /> +<hkern u1="Ù" u2="Ä" k="20" /> +<hkern u1="Ù" u2="Ã" k="20" /> +<hkern u1="Ù" u2="Â" k="20" /> +<hkern u1="Ù" u2="Á" k="20" /> +<hkern u1="Ù" u2="À" k="20" /> +<hkern u1="Ù" u2="A" k="20" /> +<hkern u1="Ù" u2="." k="41" /> +<hkern u1="Ù" u2="," k="41" /> +<hkern u1="Ú" u2="„" k="41" /> +<hkern u1="Ú" u2="‚" k="41" /> +<hkern u1="Ú" u2="Å" k="20" /> +<hkern u1="Ú" u2="Ä" k="20" /> +<hkern u1="Ú" u2="Ã" k="20" /> +<hkern u1="Ú" u2="Â" k="20" /> +<hkern u1="Ú" u2="Á" k="20" /> +<hkern u1="Ú" u2="À" k="20" /> +<hkern u1="Ú" u2="A" k="20" /> +<hkern u1="Ú" u2="." k="41" /> +<hkern u1="Ú" u2="," k="41" /> +<hkern u1="Û" u2="„" k="41" /> +<hkern u1="Û" u2="‚" k="41" /> +<hkern u1="Û" u2="Å" k="20" /> +<hkern u1="Û" u2="Ä" k="20" /> +<hkern u1="Û" u2="Ã" k="20" /> +<hkern u1="Û" u2="Â" k="20" /> +<hkern u1="Û" u2="Á" k="20" /> +<hkern u1="Û" u2="À" k="20" /> +<hkern u1="Û" u2="A" k="20" /> +<hkern u1="Û" u2="." k="41" /> +<hkern u1="Û" u2="," k="41" /> +<hkern u1="Ü" u2="„" k="41" /> +<hkern u1="Ü" u2="‚" k="41" /> +<hkern u1="Ü" u2="Å" k="20" /> +<hkern u1="Ü" u2="Ä" k="20" /> +<hkern u1="Ü" u2="Ã" k="20" /> +<hkern u1="Ü" u2="Â" k="20" /> +<hkern u1="Ü" u2="Á" k="20" /> +<hkern u1="Ü" u2="À" k="20" /> +<hkern u1="Ü" u2="A" k="20" /> +<hkern u1="Ü" u2="." k="41" /> +<hkern u1="Ü" u2="," k="41" /> +<hkern u1="Ý" u2="„" k="123" /> +<hkern u1="Ý" u2="‚" k="123" /> +<hkern u1="Ý" u2="œ" k="102" /> +<hkern u1="Ý" u2="Œ" k="41" /> +<hkern u1="Ý" u2="ü" k="61" /> +<hkern u1="Ý" u2="û" k="61" /> +<hkern u1="Ý" u2="ú" k="61" /> +<hkern u1="Ý" u2="ù" k="61" /> +<hkern u1="Ý" u2="ø" k="102" /> +<hkern u1="Ý" u2="ö" k="102" /> +<hkern u1="Ý" u2="õ" k="102" /> +<hkern u1="Ý" u2="ô" k="102" /> +<hkern u1="Ý" u2="ó" k="102" /> +<hkern u1="Ý" u2="ò" k="102" /> +<hkern u1="Ý" u2="ë" k="102" /> +<hkern u1="Ý" u2="ê" k="102" /> +<hkern u1="Ý" u2="é" k="102" /> +<hkern u1="Ý" u2="è" k="102" /> +<hkern u1="Ý" u2="ç" k="102" /> +<hkern u1="Ý" u2="æ" k="102" /> +<hkern u1="Ý" u2="å" k="102" /> +<hkern u1="Ý" u2="ä" k="102" /> +<hkern u1="Ý" u2="ã" k="102" /> +<hkern u1="Ý" u2="â" k="102" /> +<hkern u1="Ý" u2="á" k="102" /> +<hkern u1="Ý" u2="à" k="102" /> +<hkern u1="Ý" u2="Ø" k="41" /> +<hkern u1="Ý" u2="Ö" k="41" /> +<hkern u1="Ý" u2="Õ" k="41" /> +<hkern u1="Ý" u2="Ô" k="41" /> +<hkern u1="Ý" u2="Ó" k="41" /> +<hkern u1="Ý" u2="Ò" k="41" /> +<hkern u1="Ý" u2="Ç" k="41" /> +<hkern u1="Ý" u2="Å" k="123" /> +<hkern u1="Ý" u2="Ä" k="123" /> +<hkern u1="Ý" u2="Ã" k="123" /> +<hkern u1="Ý" u2="Â" k="123" /> +<hkern u1="Ý" u2="Á" k="123" /> +<hkern u1="Ý" u2="À" k="123" /> +<hkern u1="Ý" u2="z" k="41" /> +<hkern u1="Ý" u2="u" k="61" /> +<hkern u1="Ý" u2="s" k="82" /> +<hkern u1="Ý" u2="r" k="61" /> +<hkern u1="Ý" u2="q" k="102" /> +<hkern u1="Ý" u2="p" k="61" /> +<hkern u1="Ý" u2="o" k="102" /> +<hkern u1="Ý" u2="n" k="61" /> +<hkern u1="Ý" u2="m" k="61" /> +<hkern u1="Ý" u2="g" k="41" /> +<hkern u1="Ý" u2="e" k="102" /> +<hkern u1="Ý" u2="d" k="102" /> +<hkern u1="Ý" u2="c" k="102" /> +<hkern u1="Ý" u2="a" k="102" /> +<hkern u1="Ý" u2="Q" k="41" /> +<hkern u1="Ý" u2="O" k="41" /> +<hkern u1="Ý" u2="G" k="41" /> +<hkern u1="Ý" u2="C" k="41" /> +<hkern u1="Ý" u2="A" k="123" /> +<hkern u1="Ý" u2="?" k="-41" /> +<hkern u1="Ý" u2="." k="123" /> +<hkern u1="Ý" u2="," k="123" /> +<hkern u1="Þ" u2="„" k="266" /> +<hkern u1="Þ" u2="‚" k="266" /> +<hkern u1="Þ" u2="Å" k="102" /> +<hkern u1="Þ" u2="Ä" k="102" /> +<hkern u1="Þ" u2="Ã" k="102" /> +<hkern u1="Þ" u2="Â" k="102" /> +<hkern u1="Þ" u2="Á" k="102" /> +<hkern u1="Þ" u2="À" k="102" /> +<hkern u1="Þ" u2="Z" k="20" /> +<hkern u1="Þ" u2="X" k="41" /> +<hkern u1="Þ" u2="A" k="102" /> +<hkern u1="Þ" u2="." k="266" /> +<hkern u1="Þ" u2="," k="266" /> +<hkern u1="à" u2="”" k="20" /> +<hkern u1="à" u2="’" k="20" /> +<hkern u1="à" u2="'" k="20" /> +<hkern u1="à" u2=""" k="20" /> +<hkern u1="á" u2="”" k="20" /> +<hkern u1="á" u2="’" k="20" /> +<hkern u1="á" u2="'" k="20" /> +<hkern u1="á" u2=""" k="20" /> +<hkern u1="â" u2="”" k="20" /> +<hkern u1="â" u2="’" k="20" /> +<hkern u1="â" u2="'" k="20" /> +<hkern u1="â" u2=""" k="20" /> +<hkern u1="ã" u2="”" k="20" /> +<hkern u1="ã" u2="’" k="20" /> +<hkern u1="ã" u2="'" k="20" /> +<hkern u1="ã" u2=""" k="20" /> +<hkern u1="ä" u2="”" k="20" /> +<hkern u1="ä" u2="’" k="20" /> +<hkern u1="ä" u2="'" k="20" /> +<hkern u1="ä" u2=""" k="20" /> +<hkern u1="å" u2="”" k="20" /> +<hkern u1="å" u2="’" k="20" /> +<hkern u1="å" u2="'" k="20" /> +<hkern u1="å" u2=""" k="20" /> +<hkern u1="è" u2="”" k="20" /> +<hkern u1="è" u2="’" k="20" /> +<hkern u1="è" u2="ý" k="41" /> +<hkern u1="è" u2="z" k="20" /> +<hkern u1="è" u2="y" k="41" /> +<hkern u1="è" u2="x" k="41" /> +<hkern u1="è" u2="w" k="41" /> +<hkern u1="è" u2="v" k="41" /> +<hkern u1="è" u2="'" k="20" /> +<hkern u1="è" u2=""" k="20" /> +<hkern u1="é" u2="”" k="20" /> +<hkern u1="é" u2="’" k="20" /> +<hkern u1="é" u2="ý" k="41" /> +<hkern u1="é" u2="z" k="20" /> +<hkern u1="é" u2="y" k="41" /> +<hkern u1="é" u2="x" k="41" /> +<hkern u1="é" u2="w" k="41" /> +<hkern u1="é" u2="v" k="41" /> +<hkern u1="é" u2="'" k="20" /> +<hkern u1="é" u2=""" k="20" /> +<hkern u1="ê" u2="”" k="20" /> +<hkern u1="ê" u2="’" k="20" /> +<hkern u1="ê" u2="ý" k="41" /> +<hkern u1="ê" u2="z" k="20" /> +<hkern u1="ê" u2="y" k="41" /> +<hkern u1="ê" u2="x" k="41" /> +<hkern u1="ê" u2="w" k="41" /> +<hkern u1="ê" u2="v" k="41" /> +<hkern u1="ê" u2="'" k="20" /> +<hkern u1="ê" u2=""" k="20" /> +<hkern u1="ë" u2="”" k="20" /> +<hkern u1="ë" u2="’" k="20" /> +<hkern u1="ë" u2="ý" k="41" /> +<hkern u1="ë" u2="z" k="20" /> +<hkern u1="ë" u2="y" k="41" /> +<hkern u1="ë" u2="x" k="41" /> +<hkern u1="ë" u2="w" k="41" /> +<hkern u1="ë" u2="v" k="41" /> +<hkern u1="ë" u2="'" k="20" /> +<hkern u1="ë" u2=""" k="20" /> +<hkern u1="ð" u2="”" k="20" /> +<hkern u1="ð" u2="’" k="20" /> +<hkern u1="ð" u2="ý" k="41" /> +<hkern u1="ð" u2="z" k="20" /> +<hkern u1="ð" u2="y" k="41" /> +<hkern u1="ð" u2="x" k="41" /> +<hkern u1="ð" u2="w" k="41" /> +<hkern u1="ð" u2="v" k="41" /> +<hkern u1="ð" u2="'" k="20" /> +<hkern u1="ð" u2=""" k="20" /> +<hkern u1="ò" u2="”" k="20" /> +<hkern u1="ò" u2="’" k="20" /> +<hkern u1="ò" u2="ý" k="41" /> +<hkern u1="ò" u2="z" k="20" /> +<hkern u1="ò" u2="y" k="41" /> +<hkern u1="ò" u2="x" k="41" /> +<hkern u1="ò" u2="w" k="41" /> +<hkern u1="ò" u2="v" k="41" /> +<hkern u1="ò" u2="'" k="20" /> +<hkern u1="ò" u2=""" k="20" /> +<hkern u1="ó" u2="”" k="20" /> +<hkern u1="ó" u2="’" k="20" /> +<hkern u1="ó" u2="ý" k="41" /> +<hkern u1="ó" u2="z" k="20" /> +<hkern u1="ó" u2="y" k="41" /> +<hkern u1="ó" u2="x" k="41" /> +<hkern u1="ó" u2="w" k="41" /> +<hkern u1="ó" u2="v" k="41" /> +<hkern u1="ó" u2="'" k="20" /> +<hkern u1="ó" u2=""" k="20" /> +<hkern u1="ô" u2="”" k="20" /> +<hkern u1="ô" u2="’" k="20" /> +<hkern u1="ô" u2="ý" k="41" /> +<hkern u1="ô" u2="z" k="20" /> +<hkern u1="ô" u2="y" k="41" /> +<hkern u1="ô" u2="x" k="41" /> +<hkern u1="ô" u2="w" k="41" /> +<hkern u1="ô" u2="v" k="41" /> +<hkern u1="ô" u2="'" k="20" /> +<hkern u1="ô" u2=""" k="20" /> +<hkern u1="ö" u2="”" k="41" /> +<hkern u1="ö" u2="’" k="41" /> +<hkern u1="ö" u2="'" k="41" /> +<hkern u1="ö" u2=""" k="41" /> +<hkern u1="ø" u2="”" k="20" /> +<hkern u1="ø" u2="’" k="20" /> +<hkern u1="ø" u2="ý" k="41" /> +<hkern u1="ø" u2="z" k="20" /> +<hkern u1="ø" u2="y" k="41" /> +<hkern u1="ø" u2="x" k="41" /> +<hkern u1="ø" u2="w" k="41" /> +<hkern u1="ø" u2="v" k="41" /> +<hkern u1="ø" u2="'" k="20" /> +<hkern u1="ø" u2=""" k="20" /> +<hkern u1="ý" u2="„" k="82" /> +<hkern u1="ý" u2="”" k="-82" /> +<hkern u1="ý" u2="‚" k="82" /> +<hkern u1="ý" u2="’" k="-82" /> +<hkern u1="ý" u2="?" k="-41" /> +<hkern u1="ý" u2="." k="82" /> +<hkern u1="ý" u2="," k="82" /> +<hkern u1="ý" u2="'" k="-82" /> +<hkern u1="ý" u2=""" k="-82" /> +<hkern u1="þ" u2="”" k="20" /> +<hkern u1="þ" u2="’" k="20" /> +<hkern u1="þ" u2="ý" k="41" /> +<hkern u1="þ" u2="z" k="20" /> +<hkern u1="þ" u2="y" k="41" /> +<hkern u1="þ" u2="x" k="41" /> +<hkern u1="þ" u2="w" k="41" /> +<hkern u1="þ" u2="v" k="41" /> +<hkern u1="þ" u2="'" k="20" /> +<hkern u1="þ" u2=""" k="20" /> +<hkern u1="ÿ" u2="„" k="82" /> +<hkern u1="ÿ" u2="”" k="-82" /> +<hkern u1="ÿ" u2="‚" k="82" /> +<hkern u1="ÿ" u2="’" k="-82" /> +<hkern u1="ÿ" u2="?" k="-41" /> +<hkern u1="ÿ" u2="." k="82" /> +<hkern u1="ÿ" u2="," k="82" /> +<hkern u1="ÿ" u2="'" k="-82" /> +<hkern u1="ÿ" u2=""" k="-82" /> +<hkern u1="Œ" u2="J" k="-123" /> +<hkern u1="Ÿ" u2="„" k="123" /> +<hkern u1="Ÿ" u2="‚" k="123" /> +<hkern u1="Ÿ" u2="œ" k="102" /> +<hkern u1="Ÿ" u2="Œ" k="41" /> +<hkern u1="Ÿ" u2="ü" k="61" /> +<hkern u1="Ÿ" u2="û" k="61" /> +<hkern u1="Ÿ" u2="ú" k="61" /> +<hkern u1="Ÿ" u2="ù" k="61" /> +<hkern u1="Ÿ" u2="ø" k="102" /> +<hkern u1="Ÿ" u2="ö" k="102" /> +<hkern u1="Ÿ" u2="õ" k="102" /> +<hkern u1="Ÿ" u2="ô" k="102" /> +<hkern u1="Ÿ" u2="ó" k="102" /> +<hkern u1="Ÿ" u2="ò" k="102" /> +<hkern u1="Ÿ" u2="ë" k="102" /> +<hkern u1="Ÿ" u2="ê" k="102" /> +<hkern u1="Ÿ" u2="é" k="102" /> +<hkern u1="Ÿ" u2="è" k="102" /> +<hkern u1="Ÿ" u2="ç" k="102" /> +<hkern u1="Ÿ" u2="æ" k="102" /> +<hkern u1="Ÿ" u2="å" k="102" /> +<hkern u1="Ÿ" u2="ä" k="102" /> +<hkern u1="Ÿ" u2="ã" k="102" /> +<hkern u1="Ÿ" u2="â" k="102" /> +<hkern u1="Ÿ" u2="á" k="102" /> +<hkern u1="Ÿ" u2="à" k="102" /> +<hkern u1="Ÿ" u2="Ø" k="41" /> +<hkern u1="Ÿ" u2="Ö" k="41" /> +<hkern u1="Ÿ" u2="Õ" k="41" /> +<hkern u1="Ÿ" u2="Ô" k="41" /> +<hkern u1="Ÿ" u2="Ó" k="41" /> +<hkern u1="Ÿ" u2="Ò" k="41" /> +<hkern u1="Ÿ" u2="Ç" k="41" /> +<hkern u1="Ÿ" u2="Å" k="123" /> +<hkern u1="Ÿ" u2="Ä" k="123" /> +<hkern u1="Ÿ" u2="Ã" k="123" /> +<hkern u1="Ÿ" u2="Â" k="123" /> +<hkern u1="Ÿ" u2="Á" k="123" /> +<hkern u1="Ÿ" u2="À" k="123" /> +<hkern u1="Ÿ" u2="z" k="41" /> +<hkern u1="Ÿ" u2="u" k="61" /> +<hkern u1="Ÿ" u2="s" k="82" /> +<hkern u1="Ÿ" u2="r" k="61" /> +<hkern u1="Ÿ" u2="q" k="102" /> +<hkern u1="Ÿ" u2="p" k="61" /> +<hkern u1="Ÿ" u2="o" k="102" /> +<hkern u1="Ÿ" u2="n" k="61" /> +<hkern u1="Ÿ" u2="m" k="61" /> +<hkern u1="Ÿ" u2="g" k="41" /> +<hkern u1="Ÿ" u2="e" k="102" /> +<hkern u1="Ÿ" u2="d" k="102" /> +<hkern u1="Ÿ" u2="c" k="102" /> +<hkern u1="Ÿ" u2="a" k="102" /> +<hkern u1="Ÿ" u2="Q" k="41" /> +<hkern u1="Ÿ" u2="O" k="41" /> +<hkern u1="Ÿ" u2="G" k="41" /> +<hkern u1="Ÿ" u2="C" k="41" /> +<hkern u1="Ÿ" u2="A" k="123" /> +<hkern u1="Ÿ" u2="?" k="-41" /> +<hkern u1="Ÿ" u2="." k="123" /> +<hkern u1="Ÿ" u2="," k="123" /> +<hkern u1="–" u2="T" k="82" /> +<hkern u1="—" u2="T" k="82" /> +<hkern u1="‘" u2="Ÿ" k="-20" /> +<hkern u1="‘" u2="œ" k="123" /> +<hkern u1="‘" u2="ü" k="61" /> +<hkern u1="‘" u2="û" k="61" /> +<hkern u1="‘" u2="ú" k="61" /> +<hkern u1="‘" u2="ù" k="61" /> +<hkern u1="‘" u2="ø" k="123" /> +<hkern u1="‘" u2="ö" k="123" /> +<hkern u1="‘" u2="õ" k="123" /> +<hkern u1="‘" u2="ô" k="123" /> +<hkern u1="‘" u2="ó" k="123" /> +<hkern u1="‘" u2="ò" k="123" /> +<hkern u1="‘" u2="ë" k="123" /> +<hkern u1="‘" u2="ê" k="123" /> +<hkern u1="‘" u2="é" k="123" /> +<hkern u1="‘" u2="è" k="123" /> +<hkern u1="‘" u2="ç" k="123" /> +<hkern u1="‘" u2="æ" k="82" /> +<hkern u1="‘" u2="å" k="82" /> +<hkern u1="‘" u2="ä" k="82" /> +<hkern u1="‘" u2="ã" k="82" /> +<hkern u1="‘" u2="â" k="82" /> +<hkern u1="‘" u2="á" k="82" /> +<hkern u1="‘" u2="à" k="123" /> +<hkern u1="‘" u2="Ý" k="-20" /> +<hkern u1="‘" u2="Å" k="143" /> +<hkern u1="‘" u2="Ä" k="143" /> +<hkern u1="‘" u2="Ã" k="143" /> +<hkern u1="‘" u2="Â" k="143" /> +<hkern u1="‘" u2="Á" k="143" /> +<hkern u1="‘" u2="À" k="143" /> +<hkern u1="‘" u2="u" k="61" /> +<hkern u1="‘" u2="s" k="61" /> +<hkern u1="‘" u2="r" k="61" /> +<hkern u1="‘" u2="q" k="123" /> +<hkern u1="‘" u2="p" k="61" /> +<hkern u1="‘" u2="o" k="123" /> +<hkern u1="‘" u2="n" k="61" /> +<hkern u1="‘" u2="m" k="61" /> +<hkern u1="‘" u2="g" k="61" /> +<hkern u1="‘" u2="e" k="123" /> +<hkern u1="‘" u2="d" k="123" /> +<hkern u1="‘" u2="c" k="123" /> +<hkern u1="‘" u2="a" k="82" /> +<hkern u1="‘" u2="Y" k="-20" /> +<hkern u1="‘" u2="W" k="-41" /> +<hkern u1="‘" u2="V" k="-41" /> +<hkern u1="‘" u2="T" k="-41" /> +<hkern u1="‘" u2="A" k="143" /> +<hkern u1="’" u2="Ÿ" k="-20" /> +<hkern u1="’" u2="œ" k="123" /> +<hkern u1="’" u2="ü" k="61" /> +<hkern u1="’" u2="û" k="61" /> +<hkern u1="’" u2="ú" k="61" /> +<hkern u1="’" u2="ù" k="61" /> +<hkern u1="’" u2="ø" k="123" /> +<hkern u1="’" u2="ö" k="123" /> +<hkern u1="’" u2="õ" k="123" /> +<hkern u1="’" u2="ô" k="123" /> +<hkern u1="’" u2="ó" k="123" /> +<hkern u1="’" u2="ò" k="123" /> +<hkern u1="’" u2="ë" k="123" /> +<hkern u1="’" u2="ê" k="123" /> +<hkern u1="’" u2="é" k="123" /> +<hkern u1="’" u2="è" k="123" /> +<hkern u1="’" u2="ç" k="123" /> +<hkern u1="’" u2="æ" k="82" /> +<hkern u1="’" u2="å" k="82" /> +<hkern u1="’" u2="ä" k="82" /> +<hkern u1="’" u2="ã" k="82" /> +<hkern u1="’" u2="â" k="82" /> +<hkern u1="’" u2="á" k="82" /> +<hkern u1="’" u2="à" k="123" /> +<hkern u1="’" u2="Ý" k="-20" /> +<hkern u1="’" u2="Å" k="143" /> +<hkern u1="’" u2="Ä" k="143" /> +<hkern u1="’" u2="Ã" k="143" /> +<hkern u1="’" u2="Â" k="143" /> +<hkern u1="’" u2="Á" k="143" /> +<hkern u1="’" u2="À" k="143" /> +<hkern u1="’" u2="u" k="61" /> +<hkern u1="’" u2="s" k="61" /> +<hkern u1="’" u2="r" k="61" /> +<hkern u1="’" u2="q" k="123" /> +<hkern u1="’" u2="p" k="61" /> +<hkern u1="’" u2="o" k="123" /> +<hkern u1="’" u2="n" k="61" /> +<hkern u1="’" u2="m" k="61" /> +<hkern u1="’" u2="g" k="61" /> +<hkern u1="’" u2="e" k="123" /> +<hkern u1="’" u2="d" k="123" /> +<hkern u1="’" u2="c" k="123" /> +<hkern u1="’" u2="a" k="82" /> +<hkern u1="’" u2="Y" k="-20" /> +<hkern u1="’" u2="W" k="-41" /> +<hkern u1="’" u2="V" k="-41" /> +<hkern u1="’" u2="T" k="-41" /> +<hkern u1="’" u2="A" k="143" /> +<hkern u1="‚" u2="Ÿ" k="123" /> +<hkern u1="‚" u2="Œ" k="102" /> +<hkern u1="‚" u2="Ý" k="123" /> +<hkern u1="‚" u2="Ü" k="41" /> +<hkern u1="‚" u2="Û" k="41" /> +<hkern u1="‚" u2="Ú" k="41" /> +<hkern u1="‚" u2="Ù" k="41" /> +<hkern u1="‚" u2="Ø" k="102" /> +<hkern u1="‚" u2="Ö" k="102" /> +<hkern u1="‚" u2="Õ" k="102" /> +<hkern u1="‚" u2="Ô" k="102" /> +<hkern u1="‚" u2="Ó" k="102" /> +<hkern u1="‚" u2="Ò" k="102" /> +<hkern u1="‚" u2="Ç" k="102" /> +<hkern u1="‚" u2="Y" k="123" /> +<hkern u1="‚" u2="W" k="123" /> +<hkern u1="‚" u2="V" k="123" /> +<hkern u1="‚" u2="U" k="41" /> +<hkern u1="‚" u2="T" k="143" /> +<hkern u1="‚" u2="Q" k="102" /> +<hkern u1="‚" u2="O" k="102" /> +<hkern u1="‚" u2="G" k="102" /> +<hkern u1="‚" u2="C" k="102" /> +<hkern u1="“" u2="Ÿ" k="-20" /> +<hkern u1="“" u2="œ" k="123" /> +<hkern u1="“" u2="ü" k="61" /> +<hkern u1="“" u2="û" k="61" /> +<hkern u1="“" u2="ú" k="61" /> +<hkern u1="“" u2="ù" k="61" /> +<hkern u1="“" u2="ø" k="123" /> +<hkern u1="“" u2="ö" k="123" /> +<hkern u1="“" u2="õ" k="123" /> +<hkern u1="“" u2="ô" k="123" /> +<hkern u1="“" u2="ó" k="123" /> +<hkern u1="“" u2="ò" k="123" /> +<hkern u1="“" u2="ë" k="123" /> +<hkern u1="“" u2="ê" k="123" /> +<hkern u1="“" u2="é" k="123" /> +<hkern u1="“" u2="è" k="123" /> +<hkern u1="“" u2="ç" k="123" /> +<hkern u1="“" u2="æ" k="82" /> +<hkern u1="“" u2="å" k="82" /> +<hkern u1="“" u2="ä" k="82" /> +<hkern u1="“" u2="ã" k="82" /> +<hkern u1="“" u2="â" k="82" /> +<hkern u1="“" u2="á" k="82" /> +<hkern u1="“" u2="à" k="123" /> +<hkern u1="“" u2="Ý" k="-20" /> +<hkern u1="“" u2="Å" k="143" /> +<hkern u1="“" u2="Ä" k="143" /> +<hkern u1="“" u2="Ã" k="143" /> +<hkern u1="“" u2="Â" k="143" /> +<hkern u1="“" u2="Á" k="143" /> +<hkern u1="“" u2="À" k="143" /> +<hkern u1="“" u2="u" k="61" /> +<hkern u1="“" u2="s" k="61" /> +<hkern u1="“" u2="r" k="61" /> +<hkern u1="“" u2="q" k="123" /> +<hkern u1="“" u2="p" k="61" /> +<hkern u1="“" u2="o" k="123" /> +<hkern u1="“" u2="n" k="61" /> +<hkern u1="“" u2="m" k="61" /> +<hkern u1="“" u2="g" k="61" /> +<hkern u1="“" u2="e" k="123" /> +<hkern u1="“" u2="d" k="123" /> +<hkern u1="“" u2="c" k="123" /> +<hkern u1="“" u2="a" k="82" /> +<hkern u1="“" u2="Y" k="-20" /> +<hkern u1="“" u2="W" k="-41" /> +<hkern u1="“" u2="V" k="-41" /> +<hkern u1="“" u2="T" k="-41" /> +<hkern u1="“" u2="A" k="143" /> +<hkern u1="„" u2="Ÿ" k="123" /> +<hkern u1="„" u2="Œ" k="102" /> +<hkern u1="„" u2="Ý" k="123" /> +<hkern u1="„" u2="Ü" k="41" /> +<hkern u1="„" u2="Û" k="41" /> +<hkern u1="„" u2="Ú" k="41" /> +<hkern u1="„" u2="Ù" k="41" /> +<hkern u1="„" u2="Ø" k="102" /> +<hkern u1="„" u2="Ö" k="102" /> +<hkern u1="„" u2="Õ" k="102" /> +<hkern u1="„" u2="Ô" k="102" /> +<hkern u1="„" u2="Ó" k="102" /> +<hkern u1="„" u2="Ò" k="102" /> +<hkern u1="„" u2="Ç" k="102" /> +<hkern u1="„" u2="Y" k="123" /> +<hkern u1="„" u2="W" k="123" /> +<hkern u1="„" u2="V" k="123" /> +<hkern u1="„" u2="U" k="41" /> +<hkern u1="„" u2="T" k="143" /> +<hkern u1="„" u2="Q" k="102" /> +<hkern u1="„" u2="O" k="102" /> +<hkern u1="„" u2="G" k="102" /> +<hkern u1="„" u2="C" k="102" /> +<hkern g1="uniFB00" u2="”" k="-123" /> +<hkern g1="uniFB00" u2="’" k="-123" /> +<hkern g1="uniFB00" u2="'" k="-123" /> +<hkern g1="uniFB00" u2=""" k="-123" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.woff b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000..43e8b9e --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-LightItalic-webfont.woff Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.eot b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000..6bbc3cf --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.eot Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.svg b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.svg new file mode 100644 index 0000000..25a3952 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="open_sansregular" horiz-adv-x="1171" > +<font-face units-per-em="2048" ascent="1638" descent="-410" /> +<missing-glyph horiz-adv-x="532" /> +<glyph unicode="fi" horiz-adv-x="1212" d="M29 0zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1036 0h-166v1096h166v-1096zM856 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5 q-42 0 -70 27.5t-28 83.5z" /> +<glyph unicode="fl" horiz-adv-x="1212" d="M29 0zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1036 0h-166v1556h166v-1556z" /> +<glyph unicode="ffi" horiz-adv-x="1909" d="M29 0zM1358 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31 q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1731 0h-166v1096h166v-1096zM1551 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" /> +<glyph unicode="ffl" horiz-adv-x="1909" d="M29 0zM1358 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31 q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1731 0h-166v1556h166v-1556z" /> +<glyph horiz-adv-x="2048" /> +<glyph horiz-adv-x="2048" /> +<glyph unicode="
" horiz-adv-x="1044" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="	" horiz-adv-x="532" /> +<glyph unicode=" " horiz-adv-x="532" /> +<glyph unicode="!" horiz-adv-x="547" d="M326 403h-105l-51 1059h207zM152 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" /> +<glyph unicode=""" horiz-adv-x="821" d="M319 1462l-40 -528h-105l-41 528h186zM688 1462l-41 -528h-104l-41 528h186z" /> +<glyph unicode="#" horiz-adv-x="1323" d="M981 899l-66 -340h283v-129h-307l-84 -430h-137l84 430h-303l-82 -430h-136l80 430h-262v129h287l68 340h-277v127h299l82 436h139l-82 -436h305l84 436h134l-84 -436h264v-127h-289zM475 559h303l66 340h-303z" /> +<glyph unicode="$" d="M1036 449q0 -136 -102 -224.5t-285 -111.5v-232h-129v223q-112 0 -217 17.5t-172 48.5v156q83 -37 191.5 -60.5t197.5 -23.5v440q-205 65 -287.5 151t-82.5 222q0 131 101.5 215t268.5 102v182h129v-180q184 -5 355 -74l-52 -131q-149 59 -303 70v-434q157 -50 235 -97.5 t115 -109t37 -149.5zM866 436q0 72 -44.5 116.5t-172.5 88.5v-389q217 30 217 184zM319 1057q0 -76 45 -122t156 -87v387q-99 -16 -150 -62.5t-51 -115.5z" /> +<glyph unicode="%" horiz-adv-x="1686" d="M242 1026q0 -170 37 -255t120 -85q164 0 164 340q0 338 -164 338q-83 0 -120 -84t-37 -254zM700 1026q0 -228 -76.5 -344.5t-224.5 -116.5q-140 0 -217.5 119t-77.5 342q0 227 74.5 342t220.5 115q145 0 223 -119t78 -338zM1122 440q0 -171 37 -255.5t121 -84.5t124 83.5 t40 256.5q0 171 -40 253.5t-124 82.5t-121 -82.5t-37 -253.5zM1581 440q0 -227 -76.5 -343.5t-224.5 -116.5q-142 0 -218.5 119t-76.5 341q0 227 74.5 342t220.5 115q142 0 221.5 -117.5t79.5 -339.5zM1323 1462l-811 -1462h-147l811 1462h147z" /> +<glyph unicode="&" horiz-adv-x="1495" d="M414 1171q0 -69 36 -131.5t123 -150.5q129 75 179.5 138.5t50.5 146.5q0 77 -51.5 125.5t-137.5 48.5q-89 0 -144.5 -48t-55.5 -129zM569 129q241 0 400 154l-437 424q-111 -68 -157 -112.5t-68 -95.5t-22 -116q0 -117 77.5 -185.5t206.5 -68.5zM113 379q0 130 69.5 230 t249.5 202q-85 95 -115.5 144t-48.5 102t-18 110q0 150 98 234t273 84q162 0 255 -83.5t93 -232.5q0 -107 -68 -197.5t-225 -183.5l407 -391q56 62 89.5 145.5t56.5 182.5h168q-68 -286 -205 -434l299 -291h-229l-185 178q-118 -106 -240 -152t-272 -46q-215 0 -333.5 106 t-118.5 293z" /> +<glyph unicode="'" horiz-adv-x="453" d="M319 1462l-40 -528h-105l-41 528h186z" /> +<glyph unicode="(" horiz-adv-x="606" d="M82 561q0 265 77.5 496t223.5 405h162q-144 -193 -216.5 -424t-72.5 -475q0 -240 74 -469t213 -418h-160q-147 170 -224 397t-77 488z" /> +<glyph unicode=")" horiz-adv-x="606" d="M524 561q0 -263 -77.5 -490t-223.5 -395h-160q139 188 213 417.5t74 469.5q0 244 -72.5 475t-216.5 424h162q147 -175 224 -406.5t77 -494.5z" /> +<glyph unicode="*" horiz-adv-x="1130" d="M657 1556l-43 -395l398 111l26 -182l-381 -31l248 -326l-172 -94l-176 362l-160 -362l-176 94l242 326l-377 31l29 182l391 -111l-43 395h194z" /> +<glyph unicode="+" d="M653 791h412v-138h-412v-426h-139v426h-410v138h410v428h139v-428z" /> +<glyph unicode="," horiz-adv-x="502" d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182z" /> +<glyph unicode="-" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" /> +<glyph unicode="." horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" /> +<glyph unicode="/" horiz-adv-x="752" d="M731 1462l-545 -1462h-166l545 1462h166z" /> +<glyph unicode="0" d="M1069 733q0 -379 -119.5 -566t-365.5 -187q-236 0 -359 191.5t-123 561.5q0 382 119 567t363 185q238 0 361.5 -193t123.5 -559zM270 733q0 -319 75 -464.5t239 -145.5q166 0 240.5 147.5t74.5 462.5t-74.5 461.5t-240.5 146.5q-164 0 -239 -144.5t-75 -463.5z" /> +<glyph unicode="1" d="M715 0h-162v1042q0 130 8 246q-21 -21 -47 -44t-238 -195l-88 114l387 299h140v-1462z" /> +<glyph unicode="2" d="M1061 0h-961v143l385 387q176 178 232 254t84 148t28 155q0 117 -71 185.5t-197 68.5q-91 0 -172.5 -30t-181.5 -109l-88 113q202 168 440 168q206 0 323 -105.5t117 -283.5q0 -139 -78 -275t-292 -344l-320 -313v-8h752v-154z" /> +<glyph unicode="3" d="M1006 1118q0 -140 -78.5 -229t-222.5 -119v-8q176 -22 261 -112t85 -236q0 -209 -145 -321.5t-412 -112.5q-116 0 -212.5 17.5t-187.5 61.5v158q95 -47 202.5 -71.5t203.5 -24.5q379 0 379 297q0 266 -418 266h-144v143h146q171 0 271 75.5t100 209.5q0 107 -73.5 168 t-199.5 61q-96 0 -181 -26t-194 -96l-84 112q90 71 207.5 111.5t247.5 40.5q213 0 331 -97.5t118 -267.5z" /> +<glyph unicode="4" d="M1130 336h-217v-336h-159v336h-711v145l694 989h176v-983h217v-151zM754 487v486q0 143 10 323h-8q-48 -96 -90 -159l-457 -650h545z" /> +<glyph unicode="5" d="M557 893q231 0 363.5 -114.5t132.5 -313.5q0 -227 -144.5 -356t-398.5 -129q-247 0 -377 79v160q70 -45 174 -70.5t205 -25.5q176 0 273.5 83t97.5 240q0 306 -375 306q-95 0 -254 -29l-86 55l55 684h727v-153h-585l-37 -439q115 23 229 23z" /> +<glyph unicode="6" d="M117 625q0 431 167.5 644.5t495.5 213.5q113 0 178 -19v-143q-77 25 -176 25q-235 0 -359 -146.5t-136 -460.5h12q110 172 348 172q197 0 310.5 -119t113.5 -323q0 -228 -124.5 -358.5t-336.5 -130.5q-227 0 -360 170.5t-133 474.5zM608 121q142 0 220.5 89.5t78.5 258.5 q0 145 -73 228t-218 83q-90 0 -165 -37t-119.5 -102t-44.5 -135q0 -103 40 -192t113.5 -141t167.5 -52z" /> +<glyph unicode="7" d="M285 0l606 1309h-797v153h973v-133l-598 -1329h-184z" /> +<glyph unicode="8" d="M584 1483q200 0 317 -93t117 -257q0 -108 -67 -197t-214 -162q178 -85 253 -178.5t75 -216.5q0 -182 -127 -290.5t-348 -108.5q-234 0 -360 102.5t-126 290.5q0 251 306 391q-138 78 -198 168.5t-60 202.5q0 159 117.5 253.5t314.5 94.5zM268 369q0 -120 83.5 -187 t234.5 -67q149 0 232 70t83 192q0 97 -78 172.5t-272 146.5q-149 -64 -216 -141.5t-67 -185.5zM582 1348q-125 0 -196 -60t-71 -160q0 -92 59 -158t218 -132q143 60 202.5 129t59.5 161q0 101 -72.5 160.5t-199.5 59.5z" /> +<glyph unicode="9" d="M1061 838q0 -858 -664 -858q-116 0 -184 20v143q80 -26 182 -26q240 0 362.5 148.5t133.5 455.5h-12q-55 -83 -146 -126.5t-205 -43.5q-194 0 -308 116t-114 324q0 228 127.5 360t335.5 132q149 0 260.5 -76.5t171.5 -223t60 -345.5zM569 1341q-143 0 -221 -92t-78 -256 q0 -144 72 -226.5t219 -82.5q91 0 167.5 37t120.5 101t44 134q0 105 -41 194t-114.5 140t-168.5 51z" /> +<glyph unicode=":" horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM152 989q0 135 118 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" /> +<glyph unicode=";" horiz-adv-x="545" d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182zM147 989q0 135 119 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-58 0 -88.5 35t-30.5 100z" /> +<glyph unicode="<" d="M1065 242l-961 422v98l961 479v-149l-782 -371l782 -328v-151z" /> +<glyph unicode="=" d="M119 858v137h930v-137h-930zM119 449v137h930v-137h-930z" /> +<glyph unicode=">" d="M104 393l783 326l-783 373v149l961 -479v-98l-961 -422v151z" /> +<glyph unicode="?" horiz-adv-x="879" d="M289 403v54q0 117 36 192.5t134 159.5q136 115 171.5 173t35.5 140q0 102 -65.5 157.5t-188.5 55.5q-79 0 -154 -18.5t-172 -67.5l-59 135q189 99 395 99q191 0 297 -94t106 -265q0 -73 -19.5 -128.5t-57.5 -105t-164 -159.5q-101 -86 -133.5 -143t-32.5 -152v-33h-129z M240 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" /> +<glyph unicode="@" horiz-adv-x="1841" d="M1720 729q0 -142 -44 -260t-124 -183t-184 -65q-86 0 -145 52t-70 133h-8q-40 -87 -114.5 -136t-176.5 -49q-150 0 -234.5 102.5t-84.5 278.5q0 204 118 331.5t310 127.5q68 0 154 -12.5t155 -34.5l-25 -470v-22q0 -178 133 -178q91 0 148 107.5t57 279.5q0 181 -74 317 t-210.5 209.5t-313.5 73.5q-223 0 -388 -92.5t-252 -264t-87 -396.5q0 -305 161 -469t464 -164q210 0 436 86v-133q-192 -84 -436 -84q-363 0 -563.5 199.5t-200.5 557.5q0 260 107 463t305 314.5t454 111.5q215 0 382.5 -90.5t259 -257t91.5 -383.5zM686 598 q0 -254 195 -254q207 0 225 313l14 261q-72 20 -157 20q-130 0 -203.5 -90t-73.5 -250z" /> +<glyph unicode="A" horiz-adv-x="1296" d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473z" /> +<glyph unicode="B" horiz-adv-x="1327" d="M201 1462h413q291 0 421 -87t130 -275q0 -130 -72.5 -214.5t-211.5 -109.5v-10q333 -57 333 -350q0 -196 -132.5 -306t-370.5 -110h-510v1462zM371 836h280q180 0 259 56.5t79 190.5q0 123 -88 177.5t-280 54.5h-250v-479zM371 692v-547h305q177 0 266.5 68.5t89.5 214.5 q0 136 -91.5 200t-278.5 64h-291z" /> +<glyph unicode="C" horiz-adv-x="1292" d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78z" /> +<glyph unicode="D" horiz-adv-x="1493" d="M1368 745q0 -362 -196.5 -553.5t-565.5 -191.5h-405v1462h448q341 0 530 -189t189 -528zM1188 739q0 286 -143.5 431t-426.5 145h-247v-1168h207q304 0 457 149.5t153 442.5z" /> +<glyph unicode="E" horiz-adv-x="1139" d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152z" /> +<glyph unicode="F" horiz-adv-x="1057" d="M371 0h-170v1462h815v-151h-645v-535h606v-151h-606v-625z" /> +<glyph unicode="G" horiz-adv-x="1491" d="M844 766h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152z" /> +<glyph unicode="H" horiz-adv-x="1511" d="M1311 0h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1462z" /> +<glyph unicode="I" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170z" /> +<glyph unicode="J" horiz-adv-x="547" d="M-12 -385q-94 0 -148 27v145q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5z" /> +<glyph unicode="K" horiz-adv-x="1257" d="M1257 0h-200l-533 709l-153 -136v-573h-170v1462h170v-725l663 725h201l-588 -635z" /> +<glyph unicode="L" horiz-adv-x="1063" d="M201 0v1462h170v-1308h645v-154h-815z" /> +<glyph unicode="M" horiz-adv-x="1849" d="M848 0l-496 1296h-8q14 -154 14 -366v-930h-157v1462h256l463 -1206h8l467 1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137z" /> +<glyph unicode="N" horiz-adv-x="1544" d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462z" /> +<glyph unicode="O" horiz-adv-x="1595" d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5z" /> +<glyph unicode="P" horiz-adv-x="1233" d="M1128 1036q0 -222 -151.5 -341.5t-433.5 -119.5h-172v-575h-170v1462h379q548 0 548 -426zM371 721h153q226 0 327 73t101 234q0 145 -95 216t-296 71h-190v-594z" /> +<glyph unicode="Q" horiz-adv-x="1595" d="M1470 733q0 -281 -113 -467t-319 -252l348 -362h-247l-285 330l-55 -2q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5 q-243 0 -369.5 -153.5t-126.5 -446.5z" /> +<glyph unicode="R" horiz-adv-x="1266" d="M371 608v-608h-170v1462h401q269 0 397.5 -103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305zM371 754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559z" /> +<glyph unicode="S" horiz-adv-x="1124" d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58 t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244z" /> +<glyph unicode="T" horiz-adv-x="1133" d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311z" /> +<glyph unicode="U" horiz-adv-x="1491" d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170z" /> +<glyph unicode="V" horiz-adv-x="1219" d="M1036 1462h183l-527 -1462h-168l-524 1462h180l336 -946q58 -163 92 -317q36 162 94 323z" /> +<glyph unicode="W" horiz-adv-x="1896" d="M1477 0h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168l-389 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180z" /> +<glyph unicode="X" horiz-adv-x="1182" d="M1174 0h-193l-393 643l-400 -643h-180l486 764l-453 698h188l363 -579l366 579h181l-453 -692z" /> +<glyph unicode="Y" horiz-adv-x="1147" d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186z" /> +<glyph unicode="Z" horiz-adv-x="1169" d="M1087 0h-1005v133l776 1176h-752v153h959v-133l-776 -1175h798v-154z" /> +<glyph unicode="[" horiz-adv-x="674" d="M623 -324h-457v1786h457v-141h-289v-1503h289v-142z" /> +<glyph unicode="\" horiz-adv-x="752" d="M186 1462l547 -1462h-166l-544 1462h163z" /> +<glyph unicode="]" horiz-adv-x="674" d="M51 -182h289v1503h-289v141h457v-1786h-457v142z" /> +<glyph unicode="^" horiz-adv-x="1110" d="M49 551l434 922h99l477 -922h-152l-372 745l-334 -745h-152z" /> +<glyph unicode="_" horiz-adv-x="918" d="M922 -315h-926v131h926v-131z" /> +<glyph unicode="`" horiz-adv-x="1182" d="M786 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="a" horiz-adv-x="1139" d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238 v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47z" /> +<glyph unicode="b" horiz-adv-x="1255" d="M686 1114q216 0 335.5 -147.5t119.5 -417.5t-120.5 -419.5t-334.5 -149.5q-107 0 -195.5 39.5t-148.5 121.5h-12l-35 -141h-119v1556h166v-378q0 -127 -8 -228h8q116 164 344 164zM662 975q-170 0 -245 -97.5t-75 -328.5t77 -330.5t247 -99.5q153 0 228 111.5t75 320.5 q0 214 -75 319t-232 105z" /> +<glyph unicode="c" horiz-adv-x="975" d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57z" /> +<glyph unicode="d" horiz-adv-x="1255" d="M922 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418t120 421t334 150q223 0 342 -162h13l-7 79l-4 77v446h166v-1556h-135zM590 119q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5q-146 0 -223.5 -113.5t-77.5 -320.5q0 -210 77 -317 t226 -107z" /> +<glyph unicode="e" horiz-adv-x="1149" d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z " /> +<glyph unicode="f" horiz-adv-x="694" d="M670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129z" /> +<glyph unicode="g" horiz-adv-x="1122" d="M1073 1096v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226q0 100 64 173t180 99 q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174 t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187z" /> +<glyph unicode="h" horiz-adv-x="1257" d="M926 0v709q0 134 -61 200t-191 66q-173 0 -252.5 -94t-79.5 -308v-573h-166v1556h166v-471q0 -85 -8 -141h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -303.5v-715h-166z" /> +<glyph unicode="i" horiz-adv-x="518" d="M342 0h-166v1096h166v-1096zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" /> +<glyph unicode="j" horiz-adv-x="518" d="M43 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" /> +<glyph unicode="k" horiz-adv-x="1075" d="M340 561q43 61 131 160l354 375h197l-444 -467l475 -629h-201l-387 518l-125 -108v-410h-164v1556h164v-825q0 -55 -8 -170h8z" /> +<glyph unicode="l" horiz-adv-x="518" d="M342 0h-166v1556h166v-1556z" /> +<glyph unicode="m" horiz-adv-x="1905" d="M1573 0v713q0 131 -56 196.5t-174 65.5q-155 0 -229 -89t-74 -274v-612h-166v713q0 131 -56 196.5t-175 65.5q-156 0 -228.5 -93.5t-72.5 -306.5v-575h-166v1096h135l27 -150h8q47 80 132.5 125t191.5 45q257 0 336 -186h8q49 86 142 136t212 50q186 0 278.5 -95.5 t92.5 -305.5v-715h-166z" /> +<glyph unicode="n" horiz-adv-x="1257" d="M926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166z" /> +<glyph unicode="o" horiz-adv-x="1237" d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z" /> +<glyph unicode="p" horiz-adv-x="1255" d="M686 -20q-107 0 -195.5 39.5t-148.5 121.5h-12q12 -96 12 -182v-451h-166v1588h135l23 -150h8q64 90 149 130t195 40q218 0 336.5 -149t118.5 -418q0 -270 -120.5 -419.5t-334.5 -149.5zM662 975q-168 0 -243 -93t-77 -296v-37q0 -231 77 -330.5t247 -99.5 q142 0 222.5 115t80.5 317q0 205 -80.5 314.5t-226.5 109.5z" /> +<glyph unicode="q" horiz-adv-x="1255" d="M590 119q166 0 242 89t81 300v37q0 230 -78 331t-247 101q-146 0 -223.5 -113.5t-77.5 -320.5t76.5 -315.5t226.5 -108.5zM565 -20q-212 0 -331 149t-119 416q0 269 120 420t334 151q225 0 346 -170h9l24 150h131v-1588h-166v469q0 100 11 170h-13q-115 -167 -346 -167z " /> +<glyph unicode="r" horiz-adv-x="836" d="M676 1116q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 -269v-588h-166v1096h137l19 -203h8q61 107 147 165t189 58z" /> +<glyph unicode="s" horiz-adv-x="977" d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68 q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181z" /> +<glyph unicode="t" horiz-adv-x="723" d="M530 117q44 0 85 6.5t65 13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157v80l157 69l70 234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53z" /> +<glyph unicode="u" horiz-adv-x="1257" d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168z" /> +<glyph unicode="v" horiz-adv-x="1026" d="M416 0l-416 1096h178l236 -650q80 -228 94 -296h8q11 53 69.5 219.5t262.5 726.5h178l-416 -1096h-194z" /> +<glyph unicode="w" horiz-adv-x="1593" d="M1071 0l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192l-299 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197z" /> +<glyph unicode="x" horiz-adv-x="1073" d="M440 561l-381 535h189l289 -420l288 420h187l-381 -535l401 -561h-188l-307 444l-310 -444h-188z" /> +<glyph unicode="y" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156z" /> +<glyph unicode="z" horiz-adv-x="958" d="M877 0h-795v113l598 854h-561v129h743v-129l-590 -838h605v-129z" /> +<glyph unicode="{" horiz-adv-x="776" d="M475 12q0 -102 58.5 -148t171.5 -48v-140q-190 2 -294 87t-104 239v303q0 104 -63 148.5t-183 44.5v141q130 2 188 48t58 142v306q0 155 108 241t290 86v-139q-230 -6 -230 -199v-295q0 -215 -223 -254v-12q223 -39 223 -254v-297z" /> +<glyph unicode="|" horiz-adv-x="1128" d="M494 1556h141v-2052h-141v2052z" /> +<glyph unicode="}" horiz-adv-x="776" d="M522 575q-223 39 -223 254v295q0 193 -227 199v139q184 0 289.5 -87t105.5 -240v-306q0 -97 59 -142.5t189 -47.5v-141q-122 0 -185 -44.5t-63 -148.5v-303q0 -153 -102.5 -238.5t-292.5 -87.5v140q111 2 169 48t58 148v297q0 114 55 174t168 80v12z" /> +<glyph unicode="~" d="M338 713q-53 0 -116.5 -33.5t-117.5 -87.5v151q100 109 244 109q68 0 124.5 -14t145.5 -52q66 -28 115 -41.5t96 -13.5q54 0 118 32t118 89v-150q-102 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12z" /> +<glyph unicode="¡" horiz-adv-x="547" d="M219 684h105l51 -1057h-207zM393 983q0 -135 -121 -135q-60 0 -90 35.5t-30 99.5q0 63 31.5 99t88.5 36q51 0 86 -32t35 -103z" /> +<glyph unicode="¢" d="M971 240q-105 -54 -252 -60v-200h-133v206q-203 32 -299.5 168.5t-96.5 386.5q0 508 396 570v172h135v-164q75 -3 146 -19.5t120 -39.5l-49 -140q-133 51 -242 51q-172 0 -253 -105.5t-81 -322.5q0 -212 79.5 -313.5t246.5 -101.5q141 0 283 59v-147z" /> +<glyph unicode="£" d="M682 1481q190 0 360 -84l-61 -133q-154 77 -297 77q-123 0 -185.5 -62t-62.5 -202v-295h422v-127h-422v-221q0 -100 -32.5 -168t-106.5 -112h795v-154h-1029v141q205 47 205 291v223h-198v127h198v316q0 178 112 280.5t302 102.5z" /> +<glyph unicode="¤" d="M184 723q0 122 74 229l-135 140l94 92l135 -133q104 73 234 73q127 0 229 -73l137 133l95 -92l-134 -138q74 -113 74 -231q0 -131 -74 -234l131 -135l-92 -92l-137 133q-102 -71 -229 -71q-134 0 -234 73l-135 -133l-92 92l133 136q-74 107 -74 231zM313 723 q0 -112 78.5 -192t194.5 -80t195 79.5t79 192.5q0 114 -80 195t-194 81q-116 0 -194.5 -82t-78.5 -194z" /> +<glyph unicode="¥" d="M584 735l379 727h174l-416 -770h262v-127h-317v-170h317v-127h-317v-268h-164v268h-316v127h316v170h-316v127h256l-411 770h178z" /> +<glyph unicode="¦" horiz-adv-x="1128" d="M494 1556h141v-776h-141v776zM494 281h141v-777h-141v777z" /> +<glyph unicode="§" horiz-adv-x="1057" d="M139 809q0 86 43 154.5t121 105.5q-74 40 -116 95.5t-42 140.5q0 121 103.5 190.5t300.5 69.5q94 0 173.5 -14.5t176.5 -53.5l-53 -131q-98 39 -165.5 52.5t-143.5 13.5q-116 0 -174 -29.5t-58 -93.5q0 -60 61.5 -102t215.5 -97q186 -68 261 -143.5t75 -182.5 q0 -90 -41 -160.5t-115 -111.5q153 -81 153 -227q0 -140 -117 -216.5t-329 -76.5q-218 0 -346 65v148q78 -37 175 -59.5t179 -22.5q134 0 204.5 38t70.5 109q0 46 -24 75t-78 58t-169 72q-142 52 -209 97t-100 102t-33 135zM285 829q0 -77 66 -129.5t233 -113.5l49 -19 q137 80 137 191q0 83 -73.5 139t-258.5 113q-68 -19 -110.5 -69t-42.5 -112z" /> +<glyph unicode="¨" horiz-adv-x="1182" d="M309 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM690 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="©" horiz-adv-x="1704" d="M893 1059q-125 0 -192.5 -87t-67.5 -241q0 -168 63.5 -249t194.5 -81q86 0 211 45v-124q-48 -20 -98.5 -34t-120.5 -14q-194 0 -298 120.5t-104 336.5q0 209 110.5 332t301.5 123q128 0 246 -60l-58 -118q-108 51 -188 51zM100 731q0 200 100 375t275 276t377 101 q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87 t-236.5 -235.5t-87.5 -324.5z" /> +<glyph unicode="ª" horiz-adv-x="725" d="M532 801l-24 84q-92 -97 -232 -97q-95 0 -150.5 49.5t-55.5 151.5t77 154.5t242 58.5l117 4v39q0 133 -148 133q-100 0 -204 -51l-43 96q114 56 247 56q130 0 198.5 -52.5t68.5 -173.5v-452h-93zM193 989q0 -100 112 -100q201 0 201 180v49l-98 -4q-112 -4 -163.5 -32.5 t-51.5 -92.5z" /> +<glyph unicode="«" horiz-adv-x="1018" d="M82 551l342 407l119 -69l-289 -350l289 -351l-119 -71l-342 407v27zM477 551l344 407l117 -69l-287 -350l287 -351l-117 -71l-344 407v27z" /> +<glyph unicode="¬" d="M1065 791v-527h-137v389h-824v138h961z" /> +<glyph unicode="­" horiz-adv-x="659" d="M84 473zM84 473v152h491v-152h-491z" /> +<glyph unicode="®" horiz-adv-x="1704" d="M723 762h108q80 0 128.5 41.5t48.5 105.5q0 75 -43 107.5t-136 32.5h-106v-287zM1157 913q0 -80 -42.5 -141.5t-119.5 -91.5l238 -395h-168l-207 354h-135v-354h-148v891h261q166 0 243.5 -65t77.5 -198zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5z " /> +<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v127h1036v-127z" /> +<glyph unicode="°" horiz-adv-x="877" d="M127 1171q0 130 90.5 221t220.5 91t221 -90.5t91 -221.5q0 -84 -41 -155.5t-114 -113.5t-157 -42q-130 0 -220.5 90t-90.5 221zM242 1171q0 -82 58.5 -139t139.5 -57q80 0 137.5 56.5t57.5 139.5q0 84 -56.5 140.5t-138.5 56.5q-83 0 -140.5 -57t-57.5 -140z" /> +<glyph unicode="±" d="M104 1zM653 791h412v-138h-412v-426h-139v426h-410v138h410v428h139v-428zM104 1v138h961v-138h-961z" /> +<glyph unicode="²" horiz-adv-x="711" d="M653 586h-604v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119z" /> +<glyph unicode="³" horiz-adv-x="711" d="M627 1255q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90 q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5z" /> +<glyph unicode="´" horiz-adv-x="1182" d="M393 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="µ" horiz-adv-x="1268" d="M342 381q0 -262 254 -262q171 0 250.5 94.5t79.5 306.5v576h166v-1096h-136l-26 147h-10q-111 -167 -340 -167q-150 0 -238 92h-10q10 -84 10 -244v-320h-166v1588h166v-715z" /> +<glyph unicode="¶" horiz-adv-x="1341" d="M1120 -260h-114v1712h-213v-1712h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h557v-1816z" /> +<glyph unicode="·" horiz-adv-x="545" d="M152 723q0 66 31 100.5t87 34.5q58 0 90.5 -34.5t32.5 -100.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" /> +<glyph unicode="¸" horiz-adv-x="465" d="M436 -289q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" /> +<glyph unicode="¹" horiz-adv-x="711" d="M338 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96z" /> +<glyph unicode="º" horiz-adv-x="768" d="M702 1135q0 -164 -85.5 -255.5t-235.5 -91.5q-146 0 -230.5 93t-84.5 254q0 163 84 253.5t235 90.5q152 0 234.5 -91t82.5 -253zM188 1135q0 -122 45.5 -183t149.5 -61q105 0 151 61t46 183q0 123 -46 182t-151 59q-103 0 -149 -59t-46 -182z" /> +<glyph unicode="»" horiz-adv-x="1018" d="M936 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27zM541 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27z" /> +<glyph unicode="¼" horiz-adv-x="1597" d="M75 0zM1298 1462l-903 -1462h-143l903 1462h143zM337 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1489 203h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM1219 320v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45 t-26 -39.5l-168 -246h262z" /> +<glyph unicode="½" horiz-adv-x="1597" d="M46 0zM1230 1462l-903 -1462h-143l903 1462h143zM308 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1499 1h-604v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88 q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119z" /> +<glyph unicode="¾" horiz-adv-x="1597" d="M26 0zM620 1255q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90 q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5zM1390 1462l-903 -1462h-143l903 1462h143zM1569 203h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM1299 320v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5l-168 -246h262z" /> +<glyph unicode="¿" horiz-adv-x="879" d="M590 684v-51q0 -122 -37.5 -196t-134.5 -158q-121 -106 -151.5 -143.5t-43 -76t-12.5 -94.5q0 -100 66 -156.5t188 -56.5q80 0 155 19t173 67l59 -135q-197 -96 -395 -96q-190 0 -298 93t-108 263q0 70 17.5 122.5t49.5 97t76.5 85.5t98.5 88q101 88 133.5 146t32.5 151 v31h131zM639 983q0 -135 -121 -135q-59 0 -90 34.5t-31 100.5q0 64 33 99.5t88 35.5q51 0 86 -32t35 -103z" /> +<glyph unicode="À" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM724 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="Á" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM526 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="Â" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM303 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186 h-115v23z" /> +<glyph unicode="Ã" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM792 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5 q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" /> +<glyph unicode="Ä" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM364 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5z M745 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="Å" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM870 1587q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5z M762 1585q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" /> +<glyph unicode="Æ" horiz-adv-x="1788" d="M1665 0h-750v465h-514l-227 -465h-176l698 1462h969v-151h-580v-471h541v-150h-541v-538h580v-152zM469 618h446v693h-118z" /> +<glyph unicode="Ç" horiz-adv-x="1292" d="M125 0zM827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM950 -289q0 -97 -76.5 -150 t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" /> +<glyph unicode="È" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM713 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="É" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM456 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="Ê" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM263 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="Ë" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM327 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM708 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="Ì" horiz-adv-x="571" d="M5 0zM201 0v1462h170v-1462h-170zM398 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="Í" horiz-adv-x="571" d="M179 0zM201 0v1462h170v-1462h-170zM179 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="Î" horiz-adv-x="571" d="M0 0zM201 0v1462h170v-1462h-170zM-57 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="Ï" horiz-adv-x="571" d="M5 0zM201 0v1462h170v-1462h-170zM5 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM386 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="Ð" horiz-adv-x="1479" d="M1352 745q0 -362 -196.5 -553.5t-565.5 -191.5h-389v649h-154v150h154v663h434q337 0 527 -187.5t190 -529.5zM1171 739q0 576 -569 576h-231v-516h379v-150h-379v-502h190q610 0 610 592z" /> +<glyph unicode="Ñ" horiz-adv-x="1544" d="M201 0zM1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462zM935 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41 t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" /> +<glyph unicode="Ò" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM907 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="Ó" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM659 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="Ô" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM448 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="Õ" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM942 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" /> +<glyph unicode="Ö" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM522 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM903 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="×" d="M940 1176l96 -99l-352 -354l350 -352l-96 -99l-354 351l-348 -351l-101 99l350 352l-352 352l100 101l353 -355z" /> +<glyph unicode="Ø" horiz-adv-x="1595" d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-235 0 -383 100l-101 -141l-120 79l108 154q-178 198 -178 563q0 357 176 553.5t500 196.5q209 0 366 -94l97 135l120 -80l-106 -148q192 -202 192 -565zM1290 733q0 272 -110 426l-672 -948q115 -82 291 -82q243 0 367 153 t124 451zM305 733q0 -262 101 -416l669 943q-106 73 -274 73q-243 0 -369.5 -153.5t-126.5 -446.5z" /> +<glyph unicode="Ù" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM856 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="Ú" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM600 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="Û" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM393 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186 q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="Ü" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM461 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5 t-26.5 74.5zM842 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="Ý" horiz-adv-x="1147" d="M0 0zM573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM442 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="Þ" horiz-adv-x="1251" d="M1145 784q0 -227 -151.5 -346t-438.5 -119h-184v-319h-170v1462h170v-256h215q281 0 420 -103.5t139 -318.5zM371 465h168q226 0 327 71.5t101 235.5q0 149 -95 218t-297 69h-204v-594z" /> +<glyph unicode="ß" horiz-adv-x="1274" d="M1049 1266q0 -135 -143 -250q-88 -70 -116 -103.5t-28 -66.5q0 -32 13.5 -53t49 -49.5t113.5 -79.5q140 -95 191 -173.5t51 -179.5q0 -160 -97 -245.5t-276 -85.5q-188 0 -295 69v154q63 -39 141 -62.5t150 -23.5q215 0 215 182q0 75 -41.5 128.5t-151.5 123.5 q-127 82 -175 143.5t-48 145.5q0 63 34.5 116t105.5 106q75 57 107 102t32 98q0 80 -68 122.5t-195 42.5q-276 0 -276 -223v-1204h-166v1202q0 178 110 271.5t332 93.5q206 0 318.5 -78.5t112.5 -222.5z" /> +<glyph unicode="à" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM672 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="á" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM436 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="â" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM228 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="ã" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM721 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99 q-13 -121 -69.5 -189.5t-150.5 -68.5z" /> +<glyph unicode="ä" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM279 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM660 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75 q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="å" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM804 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5zM696 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5 t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" /> +<glyph unicode="æ" horiz-adv-x="1757" d="M94 303q0 161 124 250.5t378 97.5l184 6v68q0 129 -58 190.5t-177 61.5q-144 0 -307 -84l-52 127q74 41 173.5 67.5t197.5 26.5q130 0 212.5 -43.5t123.5 -138.5q53 88 138.5 136t195.5 48q192 0 308 -133.5t116 -355.5v-107h-701q8 -395 322 -395q91 0 169.5 17.5 t162.5 56.5v-148q-86 -38 -160.5 -54.5t-175.5 -16.5q-289 0 -414 233q-81 -127 -179.5 -180t-232.5 -53q-163 0 -255.5 85t-92.5 238zM268 301q0 -95 53.5 -139.5t141.5 -44.5q145 0 229 84.5t84 238.5v99l-158 -7q-186 -8 -268 -62.5t-82 -168.5zM1225 977 q-121 0 -190.5 -83t-80.5 -241h519q0 156 -64 240t-184 84z" /> +<glyph unicode="ç" horiz-adv-x="975" d="M115 0zM614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM762 -289q0 -97 -76.5 -150t-226.5 -53 q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" /> +<glyph unicode="è" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM711 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="é" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM471 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="ê" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM259 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="ë" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM319 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM700 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="ì" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM355 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="í" horiz-adv-x="518" d="M169 0zM342 0h-166v1096h166v-1096zM169 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="î" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM-77 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="ï" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM-20 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM361 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="ð" horiz-adv-x="1221" d="M1122 563q0 -281 -130.5 -432t-377.5 -151q-222 0 -361.5 134.5t-139.5 360.5q0 230 131.5 361t351.5 131q226 0 326 -121l8 4q-57 214 -262 405l-271 -155l-73 108l233 133q-92 62 -186 111l69 117q156 -73 258 -148l238 138l76 -107l-207 -119q152 -143 234.5 -342 t82.5 -428zM954 512q0 147 -90 232t-246 85q-337 0 -337 -360q0 -167 87.5 -258.5t249.5 -91.5q175 0 255.5 100.5t80.5 292.5z" /> +<glyph unicode="ñ" horiz-adv-x="1257" d="M176 0zM926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166zM802 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98 q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" /> +<glyph unicode="ò" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M742 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="ó" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M479 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="ô" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M282 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="õ" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M773 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" /> +<glyph unicode="ö" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M336 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM717 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="÷" d="M104 653v138h961v-138h-961zM471 373q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5zM471 1071q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5z " /> +<glyph unicode="ø" horiz-adv-x="1237" d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-154 0 -266 69l-84 -117l-114 78l94 131q-129 152 -129 408q0 268 134 417.5t372 149.5q154 0 270 -76l84 119l117 -76l-97 -133q127 -152 127 -401zM287 549q0 -171 53 -273l465 646q-75 53 -189 53q-163 0 -246 -107 t-83 -319zM950 549q0 164 -51 264l-465 -643q71 -51 184 -51q163 0 247.5 109.5t84.5 320.5z" /> +<glyph unicode="ù" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM726 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" /> +<glyph unicode="ú" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM506 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" /> +<glyph unicode="û" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM286 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119 q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="ü" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM342 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5 q-37 0 -63.5 24.5t-26.5 74.5zM723 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="ý" horiz-adv-x="1032" d="M2 0zM2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM411 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147 h-111v25z" /> +<glyph unicode="þ" horiz-adv-x="1255" d="M344 948q66 89 151 128.5t191 39.5q215 0 335 -150t120 -417q0 -268 -120.5 -418.5t-334.5 -150.5q-222 0 -344 161h-12l4 -34q8 -77 8 -140v-459h-166v2048h166v-466q0 -52 -6 -142h8zM664 975q-168 0 -244 -92t-78 -293v-41q0 -231 77 -330.5t247 -99.5q303 0 303 432 q0 215 -74 319.5t-231 104.5z" /> +<glyph unicode="ÿ" horiz-adv-x="1032" d="M2 0zM2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM234 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM615 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="ı" horiz-adv-x="518" d="M342 0h-166v1096h166v-1096z" /> +<glyph unicode="Œ" horiz-adv-x="1890" d="M1767 0h-768q-102 -20 -194 -20q-327 0 -503.5 196.5t-176.5 558.5q0 360 174 555t494 195q102 0 192 -23h782v-151h-589v-471h551v-150h-551v-538h589v-152zM811 1333q-249 0 -377.5 -152.5t-128.5 -447.5q0 -297 128.5 -450.5t375.5 -153.5q112 0 199 33v1141 q-87 30 -197 30z" /> +<glyph unicode="œ" horiz-adv-x="1929" d="M1430 -20q-293 0 -418 235q-62 -116 -166.5 -175.5t-241.5 -59.5q-223 0 -357 152.5t-134 416.5q0 265 131 415t366 150q131 0 233.5 -59.5t164.5 -173.5q58 112 154 172.5t222 60.5q201 0 320 -132.5t119 -358.5v-105h-729q8 -393 338 -393q94 0 174.5 17.5t167.5 56.5 v-148q-88 -39 -164 -55t-180 -16zM287 549q0 -211 76 -320.5t243 -109.5q163 0 239.5 106.5t76.5 315.5q0 221 -77.5 327.5t-242.5 106.5q-166 0 -240.5 -108t-74.5 -318zM1382 975q-127 0 -199.5 -82t-84.5 -240h544q0 158 -66 240t-194 82z" /> +<glyph unicode="Ÿ" horiz-adv-x="1147" d="M0 0zM573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM294 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM675 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" /> +<glyph unicode="ˆ" horiz-adv-x="1212" d="M268 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" /> +<glyph unicode="˚" horiz-adv-x="1182" d="M813 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5zM705 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" /> +<glyph unicode="˜" horiz-adv-x="1212" d="M788 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="953" /> +<glyph unicode=" " horiz-adv-x="1907" /> +<glyph unicode=" " horiz-adv-x="635" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="317" /> +<glyph unicode=" " horiz-adv-x="238" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode=" " horiz-adv-x="105" /> +<glyph unicode="‐" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" /> +<glyph unicode="‑" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" /> +<glyph unicode="‒" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" /> +<glyph unicode="–" horiz-adv-x="1024" d="M82 473v152h860v-152h-860z" /> +<glyph unicode="—" horiz-adv-x="2048" d="M82 473v152h1884v-152h-1884z" /> +<glyph unicode="‘" horiz-adv-x="348" d="M37 961l-12 22q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" /> +<glyph unicode="’" horiz-adv-x="348" d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182z" /> +<glyph unicode="‚" horiz-adv-x="502" d="M63 0zM350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182z" /> +<glyph unicode="“" horiz-adv-x="717" d="M406 961l-15 22q56 215 178 479h123q-30 -115 -59.5 -259.5t-42.5 -241.5h-184zM37 961l-12 22q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" /> +<glyph unicode="”" horiz-adv-x="717" d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182zM678 1462l14 -22q-24 -91 -72 -224t-104 -255h-125q26 100 59 254t46 247h182z" /> +<glyph unicode="„" horiz-adv-x="829" d="M25 0zM309 238l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182zM678 238l14 -22q-24 -91 -72 -224t-104 -255h-125q26 100 59 254t46 247h182z" /> +<glyph unicode="•" horiz-adv-x="770" d="M164 748q0 121 56.5 184t164.5 63q105 0 163 -62t58 -185q0 -119 -57.5 -183.5t-163.5 -64.5q-107 0 -164 65.5t-57 182.5z" /> +<glyph unicode="…" horiz-adv-x="1606" d="M152 0zM152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM682 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM1213 106 q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" /> +<glyph unicode=" " horiz-adv-x="381" /> +<glyph unicode="‹" horiz-adv-x="623" d="M82 551l342 407l119 -69l-289 -350l289 -351l-119 -71l-342 407v27z" /> +<glyph unicode="›" horiz-adv-x="623" d="M541 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27z" /> +<glyph unicode="⁄" horiz-adv-x="266" d="M655 1462l-903 -1462h-143l903 1462h143z" /> +<glyph unicode=" " horiz-adv-x="476" /> +<glyph unicode="⁴" horiz-adv-x="711" d="M692 788h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM422 905v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5l-168 -246h262z" /> +<glyph unicode="€" horiz-adv-x="1208" d="M795 1333q-319 0 -398 -403h510v-129h-524l-2 -57v-64l2 -45h463v-129h-447q37 -180 138.5 -278.5t271.5 -98.5q156 0 309 66v-150q-146 -65 -317 -65q-237 0 -381.5 134.5t-190.5 391.5h-166v129h152l-2 42v44l2 80h-152v129h164q39 261 185 407t383 146q201 0 366 -97 l-71 -139q-166 86 -295 86z" /> +<glyph unicode="™" horiz-adv-x="1589" d="M369 741h-123v615h-209v106h543v-106h-211v-615zM969 741l-201 559h-8l6 -129v-430h-119v721h187l196 -559l203 559h180v-721h-127v420l6 137h-8l-211 -557h-104z" /> +<glyph unicode="−" d="M104 653v138h961v-138h-961z" /> +<glyph unicode="" horiz-adv-x="1095" d="M0 1095h1095v-1095h-1095v1095z" /> +<glyph horiz-adv-x="1255" d="M0 0z" /> +<hkern u1=""" u2="Ÿ" k="-20" /> +<hkern u1=""" u2="œ" k="123" /> +<hkern u1=""" u2="ü" k="61" /> +<hkern u1=""" u2="û" k="61" /> +<hkern u1=""" u2="ú" k="61" /> +<hkern u1=""" u2="ù" k="61" /> +<hkern u1=""" u2="ø" k="123" /> +<hkern u1=""" u2="ö" k="123" /> +<hkern u1=""" u2="õ" k="123" /> +<hkern u1=""" u2="ô" k="123" /> +<hkern u1=""" u2="ó" k="123" /> +<hkern u1=""" u2="ò" k="123" /> +<hkern u1=""" u2="ë" k="123" /> +<hkern u1=""" u2="ê" k="123" /> +<hkern u1=""" u2="é" k="123" /> +<hkern u1=""" u2="è" k="123" /> +<hkern u1=""" u2="ç" k="123" /> +<hkern u1=""" u2="æ" k="82" /> +<hkern u1=""" u2="å" k="82" /> +<hkern u1=""" u2="ä" k="82" /> +<hkern u1=""" u2="ã" k="82" /> +<hkern u1=""" u2="â" k="82" /> +<hkern u1=""" u2="á" k="82" /> +<hkern u1=""" u2="à" k="123" /> +<hkern u1=""" u2="Ý" k="-20" /> +<hkern u1=""" u2="Å" k="143" /> +<hkern u1=""" u2="Ä" k="143" /> +<hkern u1=""" u2="Ã" k="143" /> +<hkern u1=""" u2="Â" k="143" /> +<hkern u1=""" u2="Á" k="143" /> +<hkern u1=""" u2="À" k="143" /> +<hkern u1=""" u2="u" k="61" /> +<hkern u1=""" u2="s" k="61" /> +<hkern u1=""" u2="r" k="61" /> +<hkern u1=""" u2="q" k="123" /> +<hkern u1=""" u2="p" k="61" /> +<hkern u1=""" u2="o" k="123" /> +<hkern u1=""" u2="n" k="61" /> +<hkern u1=""" u2="m" k="61" /> +<hkern u1=""" u2="g" k="61" /> +<hkern u1=""" u2="e" k="123" /> +<hkern u1=""" u2="d" k="123" /> +<hkern u1=""" u2="c" k="123" /> +<hkern u1=""" u2="a" k="82" /> +<hkern u1=""" u2="Y" k="-20" /> +<hkern u1=""" u2="W" k="-41" /> +<hkern u1=""" u2="V" k="-41" /> +<hkern u1=""" u2="T" k="-41" /> +<hkern u1=""" u2="A" k="143" /> +<hkern u1="'" u2="Ÿ" k="-20" /> +<hkern u1="'" u2="œ" k="123" /> +<hkern u1="'" u2="ü" k="61" /> +<hkern u1="'" u2="û" k="61" /> +<hkern u1="'" u2="ú" k="61" /> +<hkern u1="'" u2="ù" k="61" /> +<hkern u1="'" u2="ø" k="123" /> +<hkern u1="'" u2="ö" k="123" /> +<hkern u1="'" u2="õ" k="123" /> +<hkern u1="'" u2="ô" k="123" /> +<hkern u1="'" u2="ó" k="123" /> +<hkern u1="'" u2="ò" k="123" /> +<hkern u1="'" u2="ë" k="123" /> +<hkern u1="'" u2="ê" k="123" /> +<hkern u1="'" u2="é" k="123" /> +<hkern u1="'" u2="è" k="123" /> +<hkern u1="'" u2="ç" k="123" /> +<hkern u1="'" u2="æ" k="82" /> +<hkern u1="'" u2="å" k="82" /> +<hkern u1="'" u2="ä" k="82" /> +<hkern u1="'" u2="ã" k="82" /> +<hkern u1="'" u2="â" k="82" /> +<hkern u1="'" u2="á" k="82" /> +<hkern u1="'" u2="à" k="123" /> +<hkern u1="'" u2="Ý" k="-20" /> +<hkern u1="'" u2="Å" k="143" /> +<hkern u1="'" u2="Ä" k="143" /> +<hkern u1="'" u2="Ã" k="143" /> +<hkern u1="'" u2="Â" k="143" /> +<hkern u1="'" u2="Á" k="143" /> +<hkern u1="'" u2="À" k="143" /> +<hkern u1="'" u2="u" k="61" /> +<hkern u1="'" u2="s" k="61" /> +<hkern u1="'" u2="r" k="61" /> +<hkern u1="'" u2="q" k="123" /> +<hkern u1="'" u2="p" k="61" /> +<hkern u1="'" u2="o" k="123" /> +<hkern u1="'" u2="n" k="61" /> +<hkern u1="'" u2="m" k="61" /> +<hkern u1="'" u2="g" k="61" /> +<hkern u1="'" u2="e" k="123" /> +<hkern u1="'" u2="d" k="123" /> +<hkern u1="'" u2="c" k="123" /> +<hkern u1="'" u2="a" k="82" /> +<hkern u1="'" u2="Y" k="-20" /> +<hkern u1="'" u2="W" k="-41" /> +<hkern u1="'" u2="V" k="-41" /> +<hkern u1="'" u2="T" k="-41" /> +<hkern u1="'" u2="A" k="143" /> +<hkern u1="(" u2="J" k="-184" /> +<hkern u1="," u2="Ÿ" k="123" /> +<hkern u1="," u2="Œ" k="102" /> +<hkern u1="," u2="Ý" k="123" /> +<hkern u1="," u2="Ü" k="41" /> +<hkern u1="," u2="Û" k="41" /> +<hkern u1="," u2="Ú" k="41" /> +<hkern u1="," u2="Ù" k="41" /> +<hkern u1="," u2="Ø" k="102" /> +<hkern u1="," u2="Ö" k="102" /> +<hkern u1="," u2="Õ" k="102" /> +<hkern u1="," u2="Ô" k="102" /> +<hkern u1="," u2="Ó" k="102" /> +<hkern u1="," u2="Ò" k="102" /> +<hkern u1="," u2="Ç" k="102" /> +<hkern u1="," u2="Y" k="123" /> +<hkern u1="," u2="W" k="123" /> +<hkern u1="," u2="V" k="123" /> +<hkern u1="," u2="U" k="41" /> +<hkern u1="," u2="T" k="143" /> +<hkern u1="," u2="Q" k="102" /> +<hkern u1="," u2="O" k="102" /> +<hkern u1="," u2="G" k="102" /> +<hkern u1="," u2="C" k="102" /> +<hkern u1="-" u2="T" k="82" /> +<hkern u1="." u2="Ÿ" k="123" /> +<hkern u1="." u2="Œ" k="102" /> +<hkern u1="." u2="Ý" k="123" /> +<hkern u1="." u2="Ü" k="41" /> +<hkern u1="." u2="Û" k="41" /> +<hkern u1="." u2="Ú" k="41" /> +<hkern u1="." u2="Ù" k="41" /> +<hkern u1="." u2="Ø" k="102" /> +<hkern u1="." u2="Ö" k="102" /> +<hkern u1="." u2="Õ" k="102" /> +<hkern u1="." u2="Ô" k="102" /> +<hkern u1="." u2="Ó" k="102" /> +<hkern u1="." u2="Ò" k="102" /> +<hkern u1="." u2="Ç" k="102" /> +<hkern u1="." u2="Y" k="123" /> +<hkern u1="." u2="W" k="123" /> +<hkern u1="." u2="V" k="123" /> +<hkern u1="." u2="U" k="41" /> +<hkern u1="." u2="T" k="143" /> +<hkern u1="." u2="Q" k="102" /> +<hkern u1="." u2="O" k="102" /> +<hkern u1="." u2="G" k="102" /> +<hkern u1="." u2="C" k="102" /> +<hkern u1="A" u2="”" k="143" /> +<hkern u1="A" u2="’" k="143" /> +<hkern u1="A" u2="Ÿ" k="123" /> +<hkern u1="A" u2="Œ" k="41" /> +<hkern u1="A" u2="Ý" k="123" /> +<hkern u1="A" u2="Ø" k="41" /> +<hkern u1="A" u2="Ö" k="41" /> +<hkern u1="A" u2="Õ" k="41" /> +<hkern u1="A" u2="Ô" k="41" /> +<hkern u1="A" u2="Ó" k="41" /> +<hkern u1="A" u2="Ò" k="41" /> +<hkern u1="A" u2="Ç" k="41" /> +<hkern u1="A" u2="Y" k="123" /> +<hkern u1="A" u2="W" k="82" /> +<hkern u1="A" u2="V" k="82" /> +<hkern u1="A" u2="T" k="143" /> +<hkern u1="A" u2="Q" k="41" /> +<hkern u1="A" u2="O" k="41" /> +<hkern u1="A" u2="J" k="-266" /> +<hkern u1="A" u2="G" k="41" /> +<hkern u1="A" u2="C" k="41" /> +<hkern u1="A" u2="'" k="143" /> +<hkern u1="A" u2=""" k="143" /> +<hkern u1="B" u2="„" k="82" /> +<hkern u1="B" u2="‚" k="82" /> +<hkern u1="B" u2="Ÿ" k="20" /> +<hkern u1="B" u2="Ý" k="20" /> +<hkern u1="B" u2="Å" k="41" /> +<hkern u1="B" u2="Ä" k="41" /> +<hkern u1="B" u2="Ã" k="41" /> +<hkern u1="B" u2="Â" k="41" /> +<hkern u1="B" u2="Á" k="41" /> +<hkern u1="B" u2="À" k="41" /> +<hkern u1="B" u2="Z" k="20" /> +<hkern u1="B" u2="Y" k="20" /> +<hkern u1="B" u2="X" k="41" /> +<hkern u1="B" u2="W" k="20" /> +<hkern u1="B" u2="V" k="20" /> +<hkern u1="B" u2="T" k="61" /> +<hkern u1="B" u2="A" k="41" /> +<hkern u1="B" u2="." k="82" /> +<hkern u1="B" u2="," k="82" /> +<hkern u1="C" u2="Œ" k="41" /> +<hkern u1="C" u2="Ø" k="41" /> +<hkern u1="C" u2="Ö" k="41" /> +<hkern u1="C" u2="Õ" k="41" /> +<hkern u1="C" u2="Ô" k="41" /> +<hkern u1="C" u2="Ó" k="41" /> +<hkern u1="C" u2="Ò" k="41" /> +<hkern u1="C" u2="Ç" k="41" /> +<hkern u1="C" u2="Q" k="41" /> +<hkern u1="C" u2="O" k="41" /> +<hkern u1="C" u2="G" k="41" /> +<hkern u1="C" u2="C" k="41" /> +<hkern u1="D" u2="„" k="82" /> +<hkern u1="D" u2="‚" k="82" /> +<hkern u1="D" u2="Ÿ" k="20" /> +<hkern u1="D" u2="Ý" k="20" /> +<hkern u1="D" u2="Å" k="41" /> +<hkern u1="D" u2="Ä" k="41" /> +<hkern u1="D" u2="Ã" k="41" /> +<hkern u1="D" u2="Â" k="41" /> +<hkern u1="D" u2="Á" k="41" /> +<hkern u1="D" u2="À" k="41" /> +<hkern u1="D" u2="Z" k="20" /> +<hkern u1="D" u2="Y" k="20" /> +<hkern u1="D" u2="X" k="41" /> +<hkern u1="D" u2="W" k="20" /> +<hkern u1="D" u2="V" k="20" /> +<hkern u1="D" u2="T" k="61" /> +<hkern u1="D" u2="A" k="41" /> +<hkern u1="D" u2="." k="82" /> +<hkern u1="D" u2="," k="82" /> +<hkern u1="E" u2="J" k="-123" /> +<hkern u1="F" u2="„" k="123" /> +<hkern u1="F" u2="‚" k="123" /> +<hkern u1="F" u2="Å" k="41" /> +<hkern u1="F" u2="Ä" k="41" /> +<hkern u1="F" u2="Ã" k="41" /> +<hkern u1="F" u2="Â" k="41" /> +<hkern u1="F" u2="Á" k="41" /> +<hkern u1="F" u2="À" k="41" /> +<hkern u1="F" u2="A" k="41" /> +<hkern u1="F" u2="?" k="-41" /> +<hkern u1="F" u2="." k="123" /> +<hkern u1="F" u2="," k="123" /> +<hkern u1="K" u2="Œ" k="41" /> +<hkern u1="K" u2="Ø" k="41" /> +<hkern u1="K" u2="Ö" k="41" /> +<hkern u1="K" u2="Õ" k="41" /> +<hkern u1="K" u2="Ô" k="41" /> +<hkern u1="K" u2="Ó" k="41" /> +<hkern u1="K" u2="Ò" k="41" /> +<hkern u1="K" u2="Ç" k="41" /> +<hkern u1="K" u2="Q" k="41" /> +<hkern u1="K" u2="O" k="41" /> +<hkern u1="K" u2="G" k="41" /> +<hkern u1="K" u2="C" k="41" /> +<hkern u1="L" u2="”" k="164" /> +<hkern u1="L" u2="’" k="164" /> +<hkern u1="L" u2="Ÿ" k="61" /> +<hkern u1="L" u2="Œ" k="41" /> +<hkern u1="L" u2="Ý" k="61" /> +<hkern u1="L" u2="Ü" k="20" /> +<hkern u1="L" u2="Û" k="20" /> +<hkern u1="L" u2="Ú" k="20" /> +<hkern u1="L" u2="Ù" k="20" /> +<hkern u1="L" u2="Ø" k="41" /> +<hkern u1="L" u2="Ö" k="41" /> +<hkern u1="L" u2="Õ" k="41" /> +<hkern u1="L" u2="Ô" k="41" /> +<hkern u1="L" u2="Ó" k="41" /> +<hkern u1="L" u2="Ò" k="41" /> +<hkern u1="L" u2="Ç" k="41" /> +<hkern u1="L" u2="Y" k="61" /> +<hkern u1="L" u2="W" k="41" /> +<hkern u1="L" u2="V" k="41" /> +<hkern u1="L" u2="U" k="20" /> +<hkern u1="L" u2="T" k="41" /> +<hkern u1="L" u2="Q" k="41" /> +<hkern u1="L" u2="O" k="41" /> +<hkern u1="L" u2="G" k="41" /> +<hkern u1="L" u2="C" k="41" /> +<hkern u1="L" u2="'" k="164" /> +<hkern u1="L" u2=""" k="164" /> +<hkern u1="O" u2="„" k="82" /> +<hkern u1="O" u2="‚" k="82" /> +<hkern u1="O" u2="Ÿ" k="20" /> +<hkern u1="O" u2="Ý" k="20" /> +<hkern u1="O" u2="Å" k="41" /> +<hkern u1="O" u2="Ä" k="41" /> +<hkern u1="O" u2="Ã" k="41" /> +<hkern u1="O" u2="Â" k="41" /> +<hkern u1="O" u2="Á" k="41" /> +<hkern u1="O" u2="À" k="41" /> +<hkern u1="O" u2="Z" k="20" /> +<hkern u1="O" u2="Y" k="20" /> +<hkern u1="O" u2="X" k="41" /> +<hkern u1="O" u2="W" k="20" /> +<hkern u1="O" u2="V" k="20" /> +<hkern u1="O" u2="T" k="61" /> +<hkern u1="O" u2="A" k="41" /> +<hkern u1="O" u2="." k="82" /> +<hkern u1="O" u2="," k="82" /> +<hkern u1="P" u2="„" k="266" /> +<hkern u1="P" u2="‚" k="266" /> +<hkern u1="P" u2="Å" k="102" /> +<hkern u1="P" u2="Ä" k="102" /> +<hkern u1="P" u2="Ã" k="102" /> +<hkern u1="P" u2="Â" k="102" /> +<hkern u1="P" u2="Á" k="102" /> +<hkern u1="P" u2="À" k="102" /> +<hkern u1="P" u2="Z" k="20" /> +<hkern u1="P" u2="X" k="41" /> +<hkern u1="P" u2="A" k="102" /> +<hkern u1="P" u2="." k="266" /> +<hkern u1="P" u2="," k="266" /> +<hkern u1="Q" u2="„" k="82" /> +<hkern u1="Q" u2="‚" k="82" /> +<hkern u1="Q" u2="Ÿ" k="20" /> +<hkern u1="Q" u2="Ý" k="20" /> +<hkern u1="Q" u2="Å" k="41" /> +<hkern u1="Q" u2="Ä" k="41" /> +<hkern u1="Q" u2="Ã" k="41" /> +<hkern u1="Q" u2="Â" k="41" /> +<hkern u1="Q" u2="Á" k="41" /> +<hkern u1="Q" u2="À" k="41" /> +<hkern u1="Q" u2="Z" k="20" /> +<hkern u1="Q" u2="Y" k="20" /> +<hkern u1="Q" u2="X" k="41" /> +<hkern u1="Q" u2="W" k="20" /> +<hkern u1="Q" u2="V" k="20" /> +<hkern u1="Q" u2="T" k="61" /> +<hkern u1="Q" u2="A" k="41" /> +<hkern u1="Q" u2="." k="82" /> +<hkern u1="Q" u2="," k="82" /> +<hkern u1="T" u2="„" k="123" /> +<hkern u1="T" u2="‚" k="123" /> +<hkern u1="T" u2="—" k="82" /> +<hkern u1="T" u2="–" k="82" /> +<hkern u1="T" u2="œ" k="143" /> +<hkern u1="T" u2="Œ" k="41" /> +<hkern u1="T" u2="ý" k="41" /> +<hkern u1="T" u2="ü" k="102" /> +<hkern u1="T" u2="û" k="102" /> +<hkern u1="T" u2="ú" k="102" /> +<hkern u1="T" u2="ù" k="102" /> +<hkern u1="T" u2="ø" k="143" /> +<hkern u1="T" u2="ö" k="143" /> +<hkern u1="T" u2="õ" k="143" /> +<hkern u1="T" u2="ô" k="143" /> +<hkern u1="T" u2="ó" k="143" /> +<hkern u1="T" u2="ò" k="143" /> +<hkern u1="T" u2="ë" k="143" /> +<hkern u1="T" u2="ê" k="143" /> +<hkern u1="T" u2="é" k="143" /> +<hkern u1="T" u2="è" k="143" /> +<hkern u1="T" u2="ç" k="143" /> +<hkern u1="T" u2="æ" k="164" /> +<hkern u1="T" u2="å" k="164" /> +<hkern u1="T" u2="ä" k="164" /> +<hkern u1="T" u2="ã" k="164" /> +<hkern u1="T" u2="â" k="164" /> +<hkern u1="T" u2="á" k="164" /> +<hkern u1="T" u2="à" k="143" /> +<hkern u1="T" u2="Ø" k="41" /> +<hkern u1="T" u2="Ö" k="41" /> +<hkern u1="T" u2="Õ" k="41" /> +<hkern u1="T" u2="Ô" k="41" /> +<hkern u1="T" u2="Ó" k="41" /> +<hkern u1="T" u2="Ò" k="41" /> +<hkern u1="T" u2="Ç" k="41" /> +<hkern u1="T" u2="Å" k="143" /> +<hkern u1="T" u2="Ä" k="143" /> +<hkern u1="T" u2="Ã" k="143" /> +<hkern u1="T" u2="Â" k="143" /> +<hkern u1="T" u2="Á" k="143" /> +<hkern u1="T" u2="À" k="143" /> +<hkern u1="T" u2="z" k="82" /> +<hkern u1="T" u2="y" k="41" /> +<hkern u1="T" u2="x" k="41" /> +<hkern u1="T" u2="w" k="41" /> +<hkern u1="T" u2="v" k="41" /> +<hkern u1="T" u2="u" k="102" /> +<hkern u1="T" u2="s" k="123" /> +<hkern u1="T" u2="r" k="102" /> +<hkern u1="T" u2="q" k="143" /> +<hkern u1="T" u2="p" k="102" /> +<hkern u1="T" u2="o" k="143" /> +<hkern u1="T" u2="n" k="102" /> +<hkern u1="T" u2="m" k="102" /> +<hkern u1="T" u2="g" k="143" /> +<hkern u1="T" u2="e" k="143" /> +<hkern u1="T" u2="d" k="143" /> +<hkern u1="T" u2="c" k="143" /> +<hkern u1="T" u2="a" k="164" /> +<hkern u1="T" u2="T" k="-41" /> +<hkern u1="T" u2="Q" k="41" /> +<hkern u1="T" u2="O" k="41" /> +<hkern u1="T" u2="G" k="41" /> +<hkern u1="T" u2="C" k="41" /> +<hkern u1="T" u2="A" k="143" /> +<hkern u1="T" u2="?" k="-41" /> +<hkern u1="T" u2="." k="123" /> +<hkern u1="T" u2="-" k="82" /> +<hkern u1="T" u2="," k="123" /> +<hkern u1="U" u2="„" k="41" /> +<hkern u1="U" u2="‚" k="41" /> +<hkern u1="U" u2="Å" k="20" /> +<hkern u1="U" u2="Ä" k="20" /> +<hkern u1="U" u2="Ã" k="20" /> +<hkern u1="U" u2="Â" k="20" /> +<hkern u1="U" u2="Á" k="20" /> +<hkern u1="U" u2="À" k="20" /> +<hkern u1="U" u2="A" k="20" /> +<hkern u1="U" u2="." k="41" /> +<hkern u1="U" u2="," k="41" /> +<hkern u1="V" u2="„" k="102" /> +<hkern u1="V" u2="‚" k="102" /> +<hkern u1="V" u2="œ" k="41" /> +<hkern u1="V" u2="Œ" k="20" /> +<hkern u1="V" u2="ü" k="20" /> +<hkern u1="V" u2="û" k="20" /> +<hkern u1="V" u2="ú" k="20" /> +<hkern u1="V" u2="ù" k="20" /> +<hkern u1="V" u2="ø" k="41" /> +<hkern u1="V" u2="ö" k="41" /> +<hkern u1="V" u2="õ" k="41" /> +<hkern u1="V" u2="ô" k="41" /> +<hkern u1="V" u2="ó" k="41" /> +<hkern u1="V" u2="ò" k="41" /> +<hkern u1="V" u2="ë" k="41" /> +<hkern u1="V" u2="ê" k="41" /> +<hkern u1="V" u2="é" k="41" /> +<hkern u1="V" u2="è" k="41" /> +<hkern u1="V" u2="ç" k="41" /> +<hkern u1="V" u2="æ" k="41" /> +<hkern u1="V" u2="å" k="41" /> +<hkern u1="V" u2="ä" k="41" /> +<hkern u1="V" u2="ã" k="41" /> +<hkern u1="V" u2="â" k="41" /> +<hkern u1="V" u2="á" k="41" /> +<hkern u1="V" u2="à" k="41" /> +<hkern u1="V" u2="Ø" k="20" /> +<hkern u1="V" u2="Ö" k="20" /> +<hkern u1="V" u2="Õ" k="20" /> +<hkern u1="V" u2="Ô" k="20" /> +<hkern u1="V" u2="Ó" k="20" /> +<hkern u1="V" u2="Ò" k="20" /> +<hkern u1="V" u2="Ç" k="20" /> +<hkern u1="V" u2="Å" k="82" /> +<hkern u1="V" u2="Ä" k="82" /> +<hkern u1="V" u2="Ã" k="82" /> +<hkern u1="V" u2="Â" k="82" /> +<hkern u1="V" u2="Á" k="82" /> +<hkern u1="V" u2="À" k="82" /> +<hkern u1="V" u2="u" k="20" /> +<hkern u1="V" u2="s" k="20" /> +<hkern u1="V" u2="r" k="20" /> +<hkern u1="V" u2="q" k="41" /> +<hkern u1="V" u2="p" k="20" /> +<hkern u1="V" u2="o" k="41" /> +<hkern u1="V" u2="n" k="20" /> +<hkern u1="V" u2="m" k="20" /> +<hkern u1="V" u2="g" k="20" /> +<hkern u1="V" u2="e" k="41" /> +<hkern u1="V" u2="d" k="41" /> +<hkern u1="V" u2="c" k="41" /> +<hkern u1="V" u2="a" k="41" /> +<hkern u1="V" u2="Q" k="20" /> +<hkern u1="V" u2="O" k="20" /> +<hkern u1="V" u2="G" k="20" /> +<hkern u1="V" u2="C" k="20" /> +<hkern u1="V" u2="A" k="82" /> +<hkern u1="V" u2="?" k="-41" /> +<hkern u1="V" u2="." k="102" /> +<hkern u1="V" u2="," k="102" /> +<hkern u1="W" u2="„" k="102" /> +<hkern u1="W" u2="‚" k="102" /> +<hkern u1="W" u2="œ" k="41" /> +<hkern u1="W" u2="Œ" k="20" /> +<hkern u1="W" u2="ü" k="20" /> +<hkern u1="W" u2="û" k="20" /> +<hkern u1="W" u2="ú" k="20" /> +<hkern u1="W" u2="ù" k="20" /> +<hkern u1="W" u2="ø" k="41" /> +<hkern u1="W" u2="ö" k="41" /> +<hkern u1="W" u2="õ" k="41" /> +<hkern u1="W" u2="ô" k="41" /> +<hkern u1="W" u2="ó" k="41" /> +<hkern u1="W" u2="ò" k="41" /> +<hkern u1="W" u2="ë" k="41" /> +<hkern u1="W" u2="ê" k="41" /> +<hkern u1="W" u2="é" k="41" /> +<hkern u1="W" u2="è" k="41" /> +<hkern u1="W" u2="ç" k="41" /> +<hkern u1="W" u2="æ" k="41" /> +<hkern u1="W" u2="å" k="41" /> +<hkern u1="W" u2="ä" k="41" /> +<hkern u1="W" u2="ã" k="41" /> +<hkern u1="W" u2="â" k="41" /> +<hkern u1="W" u2="á" k="41" /> +<hkern u1="W" u2="à" k="41" /> +<hkern u1="W" u2="Ø" k="20" /> +<hkern u1="W" u2="Ö" k="20" /> +<hkern u1="W" u2="Õ" k="20" /> +<hkern u1="W" u2="Ô" k="20" /> +<hkern u1="W" u2="Ó" k="20" /> +<hkern u1="W" u2="Ò" k="20" /> +<hkern u1="W" u2="Ç" k="20" /> +<hkern u1="W" u2="Å" k="82" /> +<hkern u1="W" u2="Ä" k="82" /> +<hkern u1="W" u2="Ã" k="82" /> +<hkern u1="W" u2="Â" k="82" /> +<hkern u1="W" u2="Á" k="82" /> +<hkern u1="W" u2="À" k="82" /> +<hkern u1="W" u2="u" k="20" /> +<hkern u1="W" u2="s" k="20" /> +<hkern u1="W" u2="r" k="20" /> +<hkern u1="W" u2="q" k="41" /> +<hkern u1="W" u2="p" k="20" /> +<hkern u1="W" u2="o" k="41" /> +<hkern u1="W" u2="n" k="20" /> +<hkern u1="W" u2="m" k="20" /> +<hkern u1="W" u2="g" k="20" /> +<hkern u1="W" u2="e" k="41" /> +<hkern u1="W" u2="d" k="41" /> +<hkern u1="W" u2="c" k="41" /> +<hkern u1="W" u2="a" k="41" /> +<hkern u1="W" u2="Q" k="20" /> +<hkern u1="W" u2="O" k="20" /> +<hkern u1="W" u2="G" k="20" /> +<hkern u1="W" u2="C" k="20" /> +<hkern u1="W" u2="A" k="82" /> +<hkern u1="W" u2="?" k="-41" /> +<hkern u1="W" u2="." k="102" /> +<hkern u1="W" u2="," k="102" /> +<hkern u1="X" u2="Œ" k="41" /> +<hkern u1="X" u2="Ø" k="41" /> +<hkern u1="X" u2="Ö" k="41" /> +<hkern u1="X" u2="Õ" k="41" /> +<hkern u1="X" u2="Ô" k="41" /> +<hkern u1="X" u2="Ó" k="41" /> +<hkern u1="X" u2="Ò" k="41" /> +<hkern u1="X" u2="Ç" k="41" /> +<hkern u1="X" u2="Q" k="41" /> +<hkern u1="X" u2="O" k="41" /> +<hkern u1="X" u2="G" k="41" /> +<hkern u1="X" u2="C" k="41" /> +<hkern u1="Y" u2="„" k="123" /> +<hkern u1="Y" u2="‚" k="123" /> +<hkern u1="Y" u2="œ" k="102" /> +<hkern u1="Y" u2="Œ" k="41" /> +<hkern u1="Y" u2="ü" k="61" /> +<hkern u1="Y" u2="û" k="61" /> +<hkern u1="Y" u2="ú" k="61" /> +<hkern u1="Y" u2="ù" k="61" /> +<hkern u1="Y" u2="ø" k="102" /> +<hkern u1="Y" u2="ö" k="102" /> +<hkern u1="Y" u2="õ" k="102" /> +<hkern u1="Y" u2="ô" k="102" /> +<hkern u1="Y" u2="ó" k="102" /> +<hkern u1="Y" u2="ò" k="102" /> +<hkern u1="Y" u2="ë" k="102" /> +<hkern u1="Y" u2="ê" k="102" /> +<hkern u1="Y" u2="é" k="102" /> +<hkern u1="Y" u2="è" k="102" /> +<hkern u1="Y" u2="ç" k="102" /> +<hkern u1="Y" u2="æ" k="102" /> +<hkern u1="Y" u2="å" k="102" /> +<hkern u1="Y" u2="ä" k="102" /> +<hkern u1="Y" u2="ã" k="102" /> +<hkern u1="Y" u2="â" k="102" /> +<hkern u1="Y" u2="á" k="102" /> +<hkern u1="Y" u2="à" k="102" /> +<hkern u1="Y" u2="Ø" k="41" /> +<hkern u1="Y" u2="Ö" k="41" /> +<hkern u1="Y" u2="Õ" k="41" /> +<hkern u1="Y" u2="Ô" k="41" /> +<hkern u1="Y" u2="Ó" k="41" /> +<hkern u1="Y" u2="Ò" k="41" /> +<hkern u1="Y" u2="Ç" k="41" /> +<hkern u1="Y" u2="Å" k="123" /> +<hkern u1="Y" u2="Ä" k="123" /> +<hkern u1="Y" u2="Ã" k="123" /> +<hkern u1="Y" u2="Â" k="123" /> +<hkern u1="Y" u2="Á" k="123" /> +<hkern u1="Y" u2="À" k="123" /> +<hkern u1="Y" u2="z" k="41" /> +<hkern u1="Y" u2="u" k="61" /> +<hkern u1="Y" u2="s" k="82" /> +<hkern u1="Y" u2="r" k="61" /> +<hkern u1="Y" u2="q" k="102" /> +<hkern u1="Y" u2="p" k="61" /> +<hkern u1="Y" u2="o" k="102" /> +<hkern u1="Y" u2="n" k="61" /> +<hkern u1="Y" u2="m" k="61" /> +<hkern u1="Y" u2="g" k="41" /> +<hkern u1="Y" u2="e" k="102" /> +<hkern u1="Y" u2="d" k="102" /> +<hkern u1="Y" u2="c" k="102" /> +<hkern u1="Y" u2="a" k="102" /> +<hkern u1="Y" u2="Q" k="41" /> +<hkern u1="Y" u2="O" k="41" /> +<hkern u1="Y" u2="G" k="41" /> +<hkern u1="Y" u2="C" k="41" /> +<hkern u1="Y" u2="A" k="123" /> +<hkern u1="Y" u2="?" k="-41" /> +<hkern u1="Y" u2="." k="123" /> +<hkern u1="Y" u2="," k="123" /> +<hkern u1="Z" u2="Œ" k="20" /> +<hkern u1="Z" u2="Ø" k="20" /> +<hkern u1="Z" u2="Ö" k="20" /> +<hkern u1="Z" u2="Õ" k="20" /> +<hkern u1="Z" u2="Ô" k="20" /> +<hkern u1="Z" u2="Ó" k="20" /> +<hkern u1="Z" u2="Ò" k="20" /> +<hkern u1="Z" u2="Ç" k="20" /> +<hkern u1="Z" u2="Q" k="20" /> +<hkern u1="Z" u2="O" k="20" /> +<hkern u1="Z" u2="G" k="20" /> +<hkern u1="Z" u2="C" k="20" /> +<hkern u1="[" u2="J" k="-184" /> +<hkern u1="a" u2="”" k="20" /> +<hkern u1="a" u2="’" k="20" /> +<hkern u1="a" u2="'" k="20" /> +<hkern u1="a" u2=""" k="20" /> +<hkern u1="b" u2="”" k="20" /> +<hkern u1="b" u2="’" k="20" /> +<hkern u1="b" u2="ý" k="41" /> +<hkern u1="b" u2="z" k="20" /> +<hkern u1="b" u2="y" k="41" /> +<hkern u1="b" u2="x" k="41" /> +<hkern u1="b" u2="w" k="41" /> +<hkern u1="b" u2="v" k="41" /> +<hkern u1="b" u2="'" k="20" /> +<hkern u1="b" u2=""" k="20" /> +<hkern u1="c" u2="”" k="-41" /> +<hkern u1="c" u2="’" k="-41" /> +<hkern u1="c" u2="'" k="-41" /> +<hkern u1="c" u2=""" k="-41" /> +<hkern u1="e" u2="”" k="20" /> +<hkern u1="e" u2="’" k="20" /> +<hkern u1="e" u2="ý" k="41" /> +<hkern u1="e" u2="z" k="20" /> +<hkern u1="e" u2="y" k="41" /> +<hkern u1="e" u2="x" k="41" /> +<hkern u1="e" u2="w" k="41" /> +<hkern u1="e" u2="v" k="41" /> +<hkern u1="e" u2="'" k="20" /> +<hkern u1="e" u2=""" k="20" /> +<hkern u1="f" u2="”" k="-123" /> +<hkern u1="f" u2="’" k="-123" /> +<hkern u1="f" u2="'" k="-123" /> +<hkern u1="f" u2=""" k="-123" /> +<hkern u1="h" u2="”" k="20" /> +<hkern u1="h" u2="’" k="20" /> +<hkern u1="h" u2="'" k="20" /> +<hkern u1="h" u2=""" k="20" /> +<hkern u1="k" u2="œ" k="41" /> +<hkern u1="k" u2="ø" k="41" /> +<hkern u1="k" u2="ö" k="41" /> +<hkern u1="k" u2="õ" k="41" /> +<hkern u1="k" u2="ô" k="41" /> +<hkern u1="k" u2="ó" k="41" /> +<hkern u1="k" u2="ò" k="41" /> +<hkern u1="k" u2="ë" k="41" /> +<hkern u1="k" u2="ê" k="41" /> +<hkern u1="k" u2="é" k="41" /> +<hkern u1="k" u2="è" k="41" /> +<hkern u1="k" u2="ç" k="41" /> +<hkern u1="k" u2="à" k="41" /> +<hkern u1="k" u2="q" k="41" /> +<hkern u1="k" u2="o" k="41" /> +<hkern u1="k" u2="e" k="41" /> +<hkern u1="k" u2="d" k="41" /> +<hkern u1="k" u2="c" k="41" /> +<hkern u1="m" u2="”" k="20" /> +<hkern u1="m" u2="’" k="20" /> +<hkern u1="m" u2="'" k="20" /> +<hkern u1="m" u2=""" k="20" /> +<hkern u1="n" u2="”" k="20" /> +<hkern u1="n" u2="’" k="20" /> +<hkern u1="n" u2="'" k="20" /> +<hkern u1="n" u2=""" k="20" /> +<hkern u1="o" u2="”" k="20" /> +<hkern u1="o" u2="’" k="20" /> +<hkern u1="o" u2="ý" k="41" /> +<hkern u1="o" u2="z" k="20" /> +<hkern u1="o" u2="y" k="41" /> +<hkern u1="o" u2="x" k="41" /> +<hkern u1="o" u2="w" k="41" /> +<hkern u1="o" u2="v" k="41" /> +<hkern u1="o" u2="'" k="20" /> +<hkern u1="o" u2=""" k="20" /> +<hkern u1="p" u2="”" k="20" /> +<hkern u1="p" u2="’" k="20" /> +<hkern u1="p" u2="ý" k="41" /> +<hkern u1="p" u2="z" k="20" /> +<hkern u1="p" u2="y" k="41" /> +<hkern u1="p" u2="x" k="41" /> +<hkern u1="p" u2="w" k="41" /> +<hkern u1="p" u2="v" k="41" /> +<hkern u1="p" u2="'" k="20" /> +<hkern u1="p" u2=""" k="20" /> +<hkern u1="r" u2="”" k="-82" /> +<hkern u1="r" u2="’" k="-82" /> +<hkern u1="r" u2="œ" k="41" /> +<hkern u1="r" u2="ø" k="41" /> +<hkern u1="r" u2="ö" k="41" /> +<hkern u1="r" u2="õ" k="41" /> +<hkern u1="r" u2="ô" k="41" /> +<hkern u1="r" u2="ó" k="41" /> +<hkern u1="r" u2="ò" k="41" /> +<hkern u1="r" u2="ë" k="41" /> +<hkern u1="r" u2="ê" k="41" /> +<hkern u1="r" u2="é" k="41" /> +<hkern u1="r" u2="è" k="41" /> +<hkern u1="r" u2="ç" k="41" /> +<hkern u1="r" u2="æ" k="41" /> +<hkern u1="r" u2="å" k="41" /> +<hkern u1="r" u2="ä" k="41" /> +<hkern u1="r" u2="ã" k="41" /> +<hkern u1="r" u2="â" k="41" /> +<hkern u1="r" u2="á" k="41" /> +<hkern u1="r" u2="à" k="41" /> +<hkern u1="r" u2="q" k="41" /> +<hkern u1="r" u2="o" k="41" /> +<hkern u1="r" u2="g" k="20" /> +<hkern u1="r" u2="e" k="41" /> +<hkern u1="r" u2="d" k="41" /> +<hkern u1="r" u2="c" k="41" /> +<hkern u1="r" u2="a" k="41" /> +<hkern u1="r" u2="'" k="-82" /> +<hkern u1="r" u2=""" k="-82" /> +<hkern u1="t" u2="”" k="-41" /> +<hkern u1="t" u2="’" k="-41" /> +<hkern u1="t" u2="'" k="-41" /> +<hkern u1="t" u2=""" k="-41" /> +<hkern u1="v" u2="„" k="82" /> +<hkern u1="v" u2="”" k="-82" /> +<hkern u1="v" u2="‚" k="82" /> +<hkern u1="v" u2="’" k="-82" /> +<hkern u1="v" u2="?" k="-41" /> +<hkern u1="v" u2="." k="82" /> +<hkern u1="v" u2="," k="82" /> +<hkern u1="v" u2="'" k="-82" /> +<hkern u1="v" u2=""" k="-82" /> +<hkern u1="w" u2="„" k="82" /> +<hkern u1="w" u2="”" k="-82" /> +<hkern u1="w" u2="‚" k="82" /> +<hkern u1="w" u2="’" k="-82" /> +<hkern u1="w" u2="?" k="-41" /> +<hkern u1="w" u2="." k="82" /> +<hkern u1="w" u2="," k="82" /> +<hkern u1="w" u2="'" k="-82" /> +<hkern u1="w" u2=""" k="-82" /> +<hkern u1="x" u2="œ" k="41" /> +<hkern u1="x" u2="ø" k="41" /> +<hkern u1="x" u2="ö" k="41" /> +<hkern u1="x" u2="õ" k="41" /> +<hkern u1="x" u2="ô" k="41" /> +<hkern u1="x" u2="ó" k="41" /> +<hkern u1="x" u2="ò" k="41" /> +<hkern u1="x" u2="ë" k="41" /> +<hkern u1="x" u2="ê" k="41" /> +<hkern u1="x" u2="é" k="41" /> +<hkern u1="x" u2="è" k="41" /> +<hkern u1="x" u2="ç" k="41" /> +<hkern u1="x" u2="à" k="41" /> +<hkern u1="x" u2="q" k="41" /> +<hkern u1="x" u2="o" k="41" /> +<hkern u1="x" u2="e" k="41" /> +<hkern u1="x" u2="d" k="41" /> +<hkern u1="x" u2="c" k="41" /> +<hkern u1="y" u2="„" k="82" /> +<hkern u1="y" u2="”" k="-82" /> +<hkern u1="y" u2="‚" k="82" /> +<hkern u1="y" u2="’" k="-82" /> +<hkern u1="y" u2="?" k="-41" /> +<hkern u1="y" u2="." k="82" /> +<hkern u1="y" u2="," k="82" /> +<hkern u1="y" u2="'" k="-82" /> +<hkern u1="y" u2=""" k="-82" /> +<hkern u1="{" u2="J" k="-184" /> +<hkern u1="À" u2="”" k="143" /> +<hkern u1="À" u2="’" k="143" /> +<hkern u1="À" u2="Ÿ" k="123" /> +<hkern u1="À" u2="Œ" k="41" /> +<hkern u1="À" u2="Ý" k="123" /> +<hkern u1="À" u2="Ø" k="41" /> +<hkern u1="À" u2="Ö" k="41" /> +<hkern u1="À" u2="Õ" k="41" /> +<hkern u1="À" u2="Ô" k="41" /> +<hkern u1="À" u2="Ó" k="41" /> +<hkern u1="À" u2="Ò" k="41" /> +<hkern u1="À" u2="Ç" k="41" /> +<hkern u1="À" u2="Y" k="123" /> +<hkern u1="À" u2="W" k="82" /> +<hkern u1="À" u2="V" k="82" /> +<hkern u1="À" u2="T" k="143" /> +<hkern u1="À" u2="Q" k="41" /> +<hkern u1="À" u2="O" k="41" /> +<hkern u1="À" u2="J" k="-266" /> +<hkern u1="À" u2="G" k="41" /> +<hkern u1="À" u2="C" k="41" /> +<hkern u1="À" u2="'" k="143" /> +<hkern u1="À" u2=""" k="143" /> +<hkern u1="Á" u2="”" k="143" /> +<hkern u1="Á" u2="’" k="143" /> +<hkern u1="Á" u2="Ÿ" k="123" /> +<hkern u1="Á" u2="Œ" k="41" /> +<hkern u1="Á" u2="Ý" k="123" /> +<hkern u1="Á" u2="Ø" k="41" /> +<hkern u1="Á" u2="Ö" k="41" /> +<hkern u1="Á" u2="Õ" k="41" /> +<hkern u1="Á" u2="Ô" k="41" /> +<hkern u1="Á" u2="Ó" k="41" /> +<hkern u1="Á" u2="Ò" k="41" /> +<hkern u1="Á" u2="Ç" k="41" /> +<hkern u1="Á" u2="Y" k="123" /> +<hkern u1="Á" u2="W" k="82" /> +<hkern u1="Á" u2="V" k="82" /> +<hkern u1="Á" u2="T" k="143" /> +<hkern u1="Á" u2="Q" k="41" /> +<hkern u1="Á" u2="O" k="41" /> +<hkern u1="Á" u2="J" k="-266" /> +<hkern u1="Á" u2="G" k="41" /> +<hkern u1="Á" u2="C" k="41" /> +<hkern u1="Á" u2="'" k="143" /> +<hkern u1="Á" u2=""" k="143" /> +<hkern u1="Â" u2="”" k="143" /> +<hkern u1="Â" u2="’" k="143" /> +<hkern u1="Â" u2="Ÿ" k="123" /> +<hkern u1="Â" u2="Œ" k="41" /> +<hkern u1="Â" u2="Ý" k="123" /> +<hkern u1="Â" u2="Ø" k="41" /> +<hkern u1="Â" u2="Ö" k="41" /> +<hkern u1="Â" u2="Õ" k="41" /> +<hkern u1="Â" u2="Ô" k="41" /> +<hkern u1="Â" u2="Ó" k="41" /> +<hkern u1="Â" u2="Ò" k="41" /> +<hkern u1="Â" u2="Ç" k="41" /> +<hkern u1="Â" u2="Y" k="123" /> +<hkern u1="Â" u2="W" k="82" /> +<hkern u1="Â" u2="V" k="82" /> +<hkern u1="Â" u2="T" k="143" /> +<hkern u1="Â" u2="Q" k="41" /> +<hkern u1="Â" u2="O" k="41" /> +<hkern u1="Â" u2="J" k="-266" /> +<hkern u1="Â" u2="G" k="41" /> +<hkern u1="Â" u2="C" k="41" /> +<hkern u1="Â" u2="'" k="143" /> +<hkern u1="Â" u2=""" k="143" /> +<hkern u1="Ã" u2="”" k="143" /> +<hkern u1="Ã" u2="’" k="143" /> +<hkern u1="Ã" u2="Ÿ" k="123" /> +<hkern u1="Ã" u2="Œ" k="41" /> +<hkern u1="Ã" u2="Ý" k="123" /> +<hkern u1="Ã" u2="Ø" k="41" /> +<hkern u1="Ã" u2="Ö" k="41" /> +<hkern u1="Ã" u2="Õ" k="41" /> +<hkern u1="Ã" u2="Ô" k="41" /> +<hkern u1="Ã" u2="Ó" k="41" /> +<hkern u1="Ã" u2="Ò" k="41" /> +<hkern u1="Ã" u2="Ç" k="41" /> +<hkern u1="Ã" u2="Y" k="123" /> +<hkern u1="Ã" u2="W" k="82" /> +<hkern u1="Ã" u2="V" k="82" /> +<hkern u1="Ã" u2="T" k="143" /> +<hkern u1="Ã" u2="Q" k="41" /> +<hkern u1="Ã" u2="O" k="41" /> +<hkern u1="Ã" u2="J" k="-266" /> +<hkern u1="Ã" u2="G" k="41" /> +<hkern u1="Ã" u2="C" k="41" /> +<hkern u1="Ã" u2="'" k="143" /> +<hkern u1="Ã" u2=""" k="143" /> +<hkern u1="Ä" u2="”" k="143" /> +<hkern u1="Ä" u2="’" k="143" /> +<hkern u1="Ä" u2="Ÿ" k="123" /> +<hkern u1="Ä" u2="Œ" k="41" /> +<hkern u1="Ä" u2="Ý" k="123" /> +<hkern u1="Ä" u2="Ø" k="41" /> +<hkern u1="Ä" u2="Ö" k="41" /> +<hkern u1="Ä" u2="Õ" k="41" /> +<hkern u1="Ä" u2="Ô" k="41" /> +<hkern u1="Ä" u2="Ó" k="41" /> +<hkern u1="Ä" u2="Ò" k="41" /> +<hkern u1="Ä" u2="Ç" k="41" /> +<hkern u1="Ä" u2="Y" k="123" /> +<hkern u1="Ä" u2="W" k="82" /> +<hkern u1="Ä" u2="V" k="82" /> +<hkern u1="Ä" u2="T" k="143" /> +<hkern u1="Ä" u2="Q" k="41" /> +<hkern u1="Ä" u2="O" k="41" /> +<hkern u1="Ä" u2="J" k="-266" /> +<hkern u1="Ä" u2="G" k="41" /> +<hkern u1="Ä" u2="C" k="41" /> +<hkern u1="Ä" u2="'" k="143" /> +<hkern u1="Ä" u2=""" k="143" /> +<hkern u1="Å" u2="”" k="143" /> +<hkern u1="Å" u2="’" k="143" /> +<hkern u1="Å" u2="Ÿ" k="123" /> +<hkern u1="Å" u2="Œ" k="41" /> +<hkern u1="Å" u2="Ý" k="123" /> +<hkern u1="Å" u2="Ø" k="41" /> +<hkern u1="Å" u2="Ö" k="41" /> +<hkern u1="Å" u2="Õ" k="41" /> +<hkern u1="Å" u2="Ô" k="41" /> +<hkern u1="Å" u2="Ó" k="41" /> +<hkern u1="Å" u2="Ò" k="41" /> +<hkern u1="Å" u2="Ç" k="41" /> +<hkern u1="Å" u2="Y" k="123" /> +<hkern u1="Å" u2="W" k="82" /> +<hkern u1="Å" u2="V" k="82" /> +<hkern u1="Å" u2="T" k="143" /> +<hkern u1="Å" u2="Q" k="41" /> +<hkern u1="Å" u2="O" k="41" /> +<hkern u1="Å" u2="J" k="-266" /> +<hkern u1="Å" u2="G" k="41" /> +<hkern u1="Å" u2="C" k="41" /> +<hkern u1="Å" u2="'" k="143" /> +<hkern u1="Å" u2=""" k="143" /> +<hkern u1="Æ" u2="J" k="-123" /> +<hkern u1="Ç" u2="Œ" k="41" /> +<hkern u1="Ç" u2="Ø" k="41" /> +<hkern u1="Ç" u2="Ö" k="41" /> +<hkern u1="Ç" u2="Õ" k="41" /> +<hkern u1="Ç" u2="Ô" k="41" /> +<hkern u1="Ç" u2="Ó" k="41" /> +<hkern u1="Ç" u2="Ò" k="41" /> +<hkern u1="Ç" u2="Ç" k="41" /> +<hkern u1="Ç" u2="Q" k="41" /> +<hkern u1="Ç" u2="O" k="41" /> +<hkern u1="Ç" u2="G" k="41" /> +<hkern u1="Ç" u2="C" k="41" /> +<hkern u1="È" u2="J" k="-123" /> +<hkern u1="É" u2="J" k="-123" /> +<hkern u1="Ê" u2="J" k="-123" /> +<hkern u1="Ë" u2="J" k="-123" /> +<hkern u1="Ð" u2="„" k="82" /> +<hkern u1="Ð" u2="‚" k="82" /> +<hkern u1="Ð" u2="Ÿ" k="20" /> +<hkern u1="Ð" u2="Ý" k="20" /> +<hkern u1="Ð" u2="Å" k="41" /> +<hkern u1="Ð" u2="Ä" k="41" /> +<hkern u1="Ð" u2="Ã" k="41" /> +<hkern u1="Ð" u2="Â" k="41" /> +<hkern u1="Ð" u2="Á" k="41" /> +<hkern u1="Ð" u2="À" k="41" /> +<hkern u1="Ð" u2="Z" k="20" /> +<hkern u1="Ð" u2="Y" k="20" /> +<hkern u1="Ð" u2="X" k="41" /> +<hkern u1="Ð" u2="W" k="20" /> +<hkern u1="Ð" u2="V" k="20" /> +<hkern u1="Ð" u2="T" k="61" /> +<hkern u1="Ð" u2="A" k="41" /> +<hkern u1="Ð" u2="." k="82" /> +<hkern u1="Ð" u2="," k="82" /> +<hkern u1="Ò" u2="„" k="82" /> +<hkern u1="Ò" u2="‚" k="82" /> +<hkern u1="Ò" u2="Ÿ" k="20" /> +<hkern u1="Ò" u2="Ý" k="20" /> +<hkern u1="Ò" u2="Å" k="41" /> +<hkern u1="Ò" u2="Ä" k="41" /> +<hkern u1="Ò" u2="Ã" k="41" /> +<hkern u1="Ò" u2="Â" k="41" /> +<hkern u1="Ò" u2="Á" k="41" /> +<hkern u1="Ò" u2="À" k="41" /> +<hkern u1="Ò" u2="Z" k="20" /> +<hkern u1="Ò" u2="Y" k="20" /> +<hkern u1="Ò" u2="X" k="41" /> +<hkern u1="Ò" u2="W" k="20" /> +<hkern u1="Ò" u2="V" k="20" /> +<hkern u1="Ò" u2="T" k="61" /> +<hkern u1="Ò" u2="A" k="41" /> +<hkern u1="Ò" u2="." k="82" /> +<hkern u1="Ò" u2="," k="82" /> +<hkern u1="Ó" u2="„" k="82" /> +<hkern u1="Ó" u2="‚" k="82" /> +<hkern u1="Ó" u2="Ÿ" k="20" /> +<hkern u1="Ó" u2="Ý" k="20" /> +<hkern u1="Ó" u2="Å" k="41" /> +<hkern u1="Ó" u2="Ä" k="41" /> +<hkern u1="Ó" u2="Ã" k="41" /> +<hkern u1="Ó" u2="Â" k="41" /> +<hkern u1="Ó" u2="Á" k="41" /> +<hkern u1="Ó" u2="À" k="41" /> +<hkern u1="Ó" u2="Z" k="20" /> +<hkern u1="Ó" u2="Y" k="20" /> +<hkern u1="Ó" u2="X" k="41" /> +<hkern u1="Ó" u2="W" k="20" /> +<hkern u1="Ó" u2="V" k="20" /> +<hkern u1="Ó" u2="T" k="61" /> +<hkern u1="Ó" u2="A" k="41" /> +<hkern u1="Ó" u2="." k="82" /> +<hkern u1="Ó" u2="," k="82" /> +<hkern u1="Ô" u2="„" k="82" /> +<hkern u1="Ô" u2="‚" k="82" /> +<hkern u1="Ô" u2="Ÿ" k="20" /> +<hkern u1="Ô" u2="Ý" k="20" /> +<hkern u1="Ô" u2="Å" k="41" /> +<hkern u1="Ô" u2="Ä" k="41" /> +<hkern u1="Ô" u2="Ã" k="41" /> +<hkern u1="Ô" u2="Â" k="41" /> +<hkern u1="Ô" u2="Á" k="41" /> +<hkern u1="Ô" u2="À" k="41" /> +<hkern u1="Ô" u2="Z" k="20" /> +<hkern u1="Ô" u2="Y" k="20" /> +<hkern u1="Ô" u2="X" k="41" /> +<hkern u1="Ô" u2="W" k="20" /> +<hkern u1="Ô" u2="V" k="20" /> +<hkern u1="Ô" u2="T" k="61" /> +<hkern u1="Ô" u2="A" k="41" /> +<hkern u1="Ô" u2="." k="82" /> +<hkern u1="Ô" u2="," k="82" /> +<hkern u1="Õ" u2="„" k="82" /> +<hkern u1="Õ" u2="‚" k="82" /> +<hkern u1="Õ" u2="Ÿ" k="20" /> +<hkern u1="Õ" u2="Ý" k="20" /> +<hkern u1="Õ" u2="Å" k="41" /> +<hkern u1="Õ" u2="Ä" k="41" /> +<hkern u1="Õ" u2="Ã" k="41" /> +<hkern u1="Õ" u2="Â" k="41" /> +<hkern u1="Õ" u2="Á" k="41" /> +<hkern u1="Õ" u2="À" k="41" /> +<hkern u1="Õ" u2="Z" k="20" /> +<hkern u1="Õ" u2="Y" k="20" /> +<hkern u1="Õ" u2="X" k="41" /> +<hkern u1="Õ" u2="W" k="20" /> +<hkern u1="Õ" u2="V" k="20" /> +<hkern u1="Õ" u2="T" k="61" /> +<hkern u1="Õ" u2="A" k="41" /> +<hkern u1="Õ" u2="." k="82" /> +<hkern u1="Õ" u2="," k="82" /> +<hkern u1="Ö" u2="„" k="82" /> +<hkern u1="Ö" u2="‚" k="82" /> +<hkern u1="Ö" u2="Ÿ" k="20" /> +<hkern u1="Ö" u2="Ý" k="20" /> +<hkern u1="Ö" u2="Å" k="41" /> +<hkern u1="Ö" u2="Ä" k="41" /> +<hkern u1="Ö" u2="Ã" k="41" /> +<hkern u1="Ö" u2="Â" k="41" /> +<hkern u1="Ö" u2="Á" k="41" /> +<hkern u1="Ö" u2="À" k="41" /> +<hkern u1="Ö" u2="Z" k="20" /> +<hkern u1="Ö" u2="Y" k="20" /> +<hkern u1="Ö" u2="X" k="41" /> +<hkern u1="Ö" u2="W" k="20" /> +<hkern u1="Ö" u2="V" k="20" /> +<hkern u1="Ö" u2="T" k="61" /> +<hkern u1="Ö" u2="A" k="41" /> +<hkern u1="Ö" u2="." k="82" /> +<hkern u1="Ö" u2="," k="82" /> +<hkern u1="Ø" u2="„" k="82" /> +<hkern u1="Ø" u2="‚" k="82" /> +<hkern u1="Ø" u2="Ÿ" k="20" /> +<hkern u1="Ø" u2="Ý" k="20" /> +<hkern u1="Ø" u2="Å" k="41" /> +<hkern u1="Ø" u2="Ä" k="41" /> +<hkern u1="Ø" u2="Ã" k="41" /> +<hkern u1="Ø" u2="Â" k="41" /> +<hkern u1="Ø" u2="Á" k="41" /> +<hkern u1="Ø" u2="À" k="41" /> +<hkern u1="Ø" u2="Z" k="20" /> +<hkern u1="Ø" u2="Y" k="20" /> +<hkern u1="Ø" u2="X" k="41" /> +<hkern u1="Ø" u2="W" k="20" /> +<hkern u1="Ø" u2="V" k="20" /> +<hkern u1="Ø" u2="T" k="61" /> +<hkern u1="Ø" u2="A" k="41" /> +<hkern u1="Ø" u2="." k="82" /> +<hkern u1="Ø" u2="," k="82" /> +<hkern u1="Ù" u2="„" k="41" /> +<hkern u1="Ù" u2="‚" k="41" /> +<hkern u1="Ù" u2="Å" k="20" /> +<hkern u1="Ù" u2="Ä" k="20" /> +<hkern u1="Ù" u2="Ã" k="20" /> +<hkern u1="Ù" u2="Â" k="20" /> +<hkern u1="Ù" u2="Á" k="20" /> +<hkern u1="Ù" u2="À" k="20" /> +<hkern u1="Ù" u2="A" k="20" /> +<hkern u1="Ù" u2="." k="41" /> +<hkern u1="Ù" u2="," k="41" /> +<hkern u1="Ú" u2="„" k="41" /> +<hkern u1="Ú" u2="‚" k="41" /> +<hkern u1="Ú" u2="Å" k="20" /> +<hkern u1="Ú" u2="Ä" k="20" /> +<hkern u1="Ú" u2="Ã" k="20" /> +<hkern u1="Ú" u2="Â" k="20" /> +<hkern u1="Ú" u2="Á" k="20" /> +<hkern u1="Ú" u2="À" k="20" /> +<hkern u1="Ú" u2="A" k="20" /> +<hkern u1="Ú" u2="." k="41" /> +<hkern u1="Ú" u2="," k="41" /> +<hkern u1="Û" u2="„" k="41" /> +<hkern u1="Û" u2="‚" k="41" /> +<hkern u1="Û" u2="Å" k="20" /> +<hkern u1="Û" u2="Ä" k="20" /> +<hkern u1="Û" u2="Ã" k="20" /> +<hkern u1="Û" u2="Â" k="20" /> +<hkern u1="Û" u2="Á" k="20" /> +<hkern u1="Û" u2="À" k="20" /> +<hkern u1="Û" u2="A" k="20" /> +<hkern u1="Û" u2="." k="41" /> +<hkern u1="Û" u2="," k="41" /> +<hkern u1="Ü" u2="„" k="41" /> +<hkern u1="Ü" u2="‚" k="41" /> +<hkern u1="Ü" u2="Å" k="20" /> +<hkern u1="Ü" u2="Ä" k="20" /> +<hkern u1="Ü" u2="Ã" k="20" /> +<hkern u1="Ü" u2="Â" k="20" /> +<hkern u1="Ü" u2="Á" k="20" /> +<hkern u1="Ü" u2="À" k="20" /> +<hkern u1="Ü" u2="A" k="20" /> +<hkern u1="Ü" u2="." k="41" /> +<hkern u1="Ü" u2="," k="41" /> +<hkern u1="Ý" u2="„" k="123" /> +<hkern u1="Ý" u2="‚" k="123" /> +<hkern u1="Ý" u2="œ" k="102" /> +<hkern u1="Ý" u2="Œ" k="41" /> +<hkern u1="Ý" u2="ü" k="61" /> +<hkern u1="Ý" u2="û" k="61" /> +<hkern u1="Ý" u2="ú" k="61" /> +<hkern u1="Ý" u2="ù" k="61" /> +<hkern u1="Ý" u2="ø" k="102" /> +<hkern u1="Ý" u2="ö" k="102" /> +<hkern u1="Ý" u2="õ" k="102" /> +<hkern u1="Ý" u2="ô" k="102" /> +<hkern u1="Ý" u2="ó" k="102" /> +<hkern u1="Ý" u2="ò" k="102" /> +<hkern u1="Ý" u2="ë" k="102" /> +<hkern u1="Ý" u2="ê" k="102" /> +<hkern u1="Ý" u2="é" k="102" /> +<hkern u1="Ý" u2="è" k="102" /> +<hkern u1="Ý" u2="ç" k="102" /> +<hkern u1="Ý" u2="æ" k="102" /> +<hkern u1="Ý" u2="å" k="102" /> +<hkern u1="Ý" u2="ä" k="102" /> +<hkern u1="Ý" u2="ã" k="102" /> +<hkern u1="Ý" u2="â" k="102" /> +<hkern u1="Ý" u2="á" k="102" /> +<hkern u1="Ý" u2="à" k="102" /> +<hkern u1="Ý" u2="Ø" k="41" /> +<hkern u1="Ý" u2="Ö" k="41" /> +<hkern u1="Ý" u2="Õ" k="41" /> +<hkern u1="Ý" u2="Ô" k="41" /> +<hkern u1="Ý" u2="Ó" k="41" /> +<hkern u1="Ý" u2="Ò" k="41" /> +<hkern u1="Ý" u2="Ç" k="41" /> +<hkern u1="Ý" u2="Å" k="123" /> +<hkern u1="Ý" u2="Ä" k="123" /> +<hkern u1="Ý" u2="Ã" k="123" /> +<hkern u1="Ý" u2="Â" k="123" /> +<hkern u1="Ý" u2="Á" k="123" /> +<hkern u1="Ý" u2="À" k="123" /> +<hkern u1="Ý" u2="z" k="41" /> +<hkern u1="Ý" u2="u" k="61" /> +<hkern u1="Ý" u2="s" k="82" /> +<hkern u1="Ý" u2="r" k="61" /> +<hkern u1="Ý" u2="q" k="102" /> +<hkern u1="Ý" u2="p" k="61" /> +<hkern u1="Ý" u2="o" k="102" /> +<hkern u1="Ý" u2="n" k="61" /> +<hkern u1="Ý" u2="m" k="61" /> +<hkern u1="Ý" u2="g" k="41" /> +<hkern u1="Ý" u2="e" k="102" /> +<hkern u1="Ý" u2="d" k="102" /> +<hkern u1="Ý" u2="c" k="102" /> +<hkern u1="Ý" u2="a" k="102" /> +<hkern u1="Ý" u2="Q" k="41" /> +<hkern u1="Ý" u2="O" k="41" /> +<hkern u1="Ý" u2="G" k="41" /> +<hkern u1="Ý" u2="C" k="41" /> +<hkern u1="Ý" u2="A" k="123" /> +<hkern u1="Ý" u2="?" k="-41" /> +<hkern u1="Ý" u2="." k="123" /> +<hkern u1="Ý" u2="," k="123" /> +<hkern u1="Þ" u2="„" k="266" /> +<hkern u1="Þ" u2="‚" k="266" /> +<hkern u1="Þ" u2="Å" k="102" /> +<hkern u1="Þ" u2="Ä" k="102" /> +<hkern u1="Þ" u2="Ã" k="102" /> +<hkern u1="Þ" u2="Â" k="102" /> +<hkern u1="Þ" u2="Á" k="102" /> +<hkern u1="Þ" u2="À" k="102" /> +<hkern u1="Þ" u2="Z" k="20" /> +<hkern u1="Þ" u2="X" k="41" /> +<hkern u1="Þ" u2="A" k="102" /> +<hkern u1="Þ" u2="." k="266" /> +<hkern u1="Þ" u2="," k="266" /> +<hkern u1="à" u2="”" k="20" /> +<hkern u1="à" u2="’" k="20" /> +<hkern u1="à" u2="'" k="20" /> +<hkern u1="à" u2=""" k="20" /> +<hkern u1="á" u2="”" k="20" /> +<hkern u1="á" u2="’" k="20" /> +<hkern u1="á" u2="'" k="20" /> +<hkern u1="á" u2=""" k="20" /> +<hkern u1="â" u2="”" k="20" /> +<hkern u1="â" u2="’" k="20" /> +<hkern u1="â" u2="'" k="20" /> +<hkern u1="â" u2=""" k="20" /> +<hkern u1="ã" u2="”" k="20" /> +<hkern u1="ã" u2="’" k="20" /> +<hkern u1="ã" u2="'" k="20" /> +<hkern u1="ã" u2=""" k="20" /> +<hkern u1="ä" u2="”" k="20" /> +<hkern u1="ä" u2="’" k="20" /> +<hkern u1="ä" u2="'" k="20" /> +<hkern u1="ä" u2=""" k="20" /> +<hkern u1="å" u2="”" k="20" /> +<hkern u1="å" u2="’" k="20" /> +<hkern u1="å" u2="'" k="20" /> +<hkern u1="å" u2=""" k="20" /> +<hkern u1="è" u2="”" k="20" /> +<hkern u1="è" u2="’" k="20" /> +<hkern u1="è" u2="ý" k="41" /> +<hkern u1="è" u2="z" k="20" /> +<hkern u1="è" u2="y" k="41" /> +<hkern u1="è" u2="x" k="41" /> +<hkern u1="è" u2="w" k="41" /> +<hkern u1="è" u2="v" k="41" /> +<hkern u1="è" u2="'" k="20" /> +<hkern u1="è" u2=""" k="20" /> +<hkern u1="é" u2="”" k="20" /> +<hkern u1="é" u2="’" k="20" /> +<hkern u1="é" u2="ý" k="41" /> +<hkern u1="é" u2="z" k="20" /> +<hkern u1="é" u2="y" k="41" /> +<hkern u1="é" u2="x" k="41" /> +<hkern u1="é" u2="w" k="41" /> +<hkern u1="é" u2="v" k="41" /> +<hkern u1="é" u2="'" k="20" /> +<hkern u1="é" u2=""" k="20" /> +<hkern u1="ê" u2="”" k="20" /> +<hkern u1="ê" u2="’" k="20" /> +<hkern u1="ê" u2="ý" k="41" /> +<hkern u1="ê" u2="z" k="20" /> +<hkern u1="ê" u2="y" k="41" /> +<hkern u1="ê" u2="x" k="41" /> +<hkern u1="ê" u2="w" k="41" /> +<hkern u1="ê" u2="v" k="41" /> +<hkern u1="ê" u2="'" k="20" /> +<hkern u1="ê" u2=""" k="20" /> +<hkern u1="ë" u2="”" k="20" /> +<hkern u1="ë" u2="’" k="20" /> +<hkern u1="ë" u2="ý" k="41" /> +<hkern u1="ë" u2="z" k="20" /> +<hkern u1="ë" u2="y" k="41" /> +<hkern u1="ë" u2="x" k="41" /> +<hkern u1="ë" u2="w" k="41" /> +<hkern u1="ë" u2="v" k="41" /> +<hkern u1="ë" u2="'" k="20" /> +<hkern u1="ë" u2=""" k="20" /> +<hkern u1="ð" u2="”" k="20" /> +<hkern u1="ð" u2="’" k="20" /> +<hkern u1="ð" u2="ý" k="41" /> +<hkern u1="ð" u2="z" k="20" /> +<hkern u1="ð" u2="y" k="41" /> +<hkern u1="ð" u2="x" k="41" /> +<hkern u1="ð" u2="w" k="41" /> +<hkern u1="ð" u2="v" k="41" /> +<hkern u1="ð" u2="'" k="20" /> +<hkern u1="ð" u2=""" k="20" /> +<hkern u1="ò" u2="”" k="20" /> +<hkern u1="ò" u2="’" k="20" /> +<hkern u1="ò" u2="ý" k="41" /> +<hkern u1="ò" u2="z" k="20" /> +<hkern u1="ò" u2="y" k="41" /> +<hkern u1="ò" u2="x" k="41" /> +<hkern u1="ò" u2="w" k="41" /> +<hkern u1="ò" u2="v" k="41" /> +<hkern u1="ò" u2="'" k="20" /> +<hkern u1="ò" u2=""" k="20" /> +<hkern u1="ó" u2="”" k="20" /> +<hkern u1="ó" u2="’" k="20" /> +<hkern u1="ó" u2="ý" k="41" /> +<hkern u1="ó" u2="z" k="20" /> +<hkern u1="ó" u2="y" k="41" /> +<hkern u1="ó" u2="x" k="41" /> +<hkern u1="ó" u2="w" k="41" /> +<hkern u1="ó" u2="v" k="41" /> +<hkern u1="ó" u2="'" k="20" /> +<hkern u1="ó" u2=""" k="20" /> +<hkern u1="ô" u2="”" k="20" /> +<hkern u1="ô" u2="’" k="20" /> +<hkern u1="ô" u2="ý" k="41" /> +<hkern u1="ô" u2="z" k="20" /> +<hkern u1="ô" u2="y" k="41" /> +<hkern u1="ô" u2="x" k="41" /> +<hkern u1="ô" u2="w" k="41" /> +<hkern u1="ô" u2="v" k="41" /> +<hkern u1="ô" u2="'" k="20" /> +<hkern u1="ô" u2=""" k="20" /> +<hkern u1="ö" u2="”" k="41" /> +<hkern u1="ö" u2="’" k="41" /> +<hkern u1="ö" u2="'" k="41" /> +<hkern u1="ö" u2=""" k="41" /> +<hkern u1="ø" u2="”" k="20" /> +<hkern u1="ø" u2="’" k="20" /> +<hkern u1="ø" u2="ý" k="41" /> +<hkern u1="ø" u2="z" k="20" /> +<hkern u1="ø" u2="y" k="41" /> +<hkern u1="ø" u2="x" k="41" /> +<hkern u1="ø" u2="w" k="41" /> +<hkern u1="ø" u2="v" k="41" /> +<hkern u1="ø" u2="'" k="20" /> +<hkern u1="ø" u2=""" k="20" /> +<hkern u1="ý" u2="„" k="82" /> +<hkern u1="ý" u2="”" k="-82" /> +<hkern u1="ý" u2="‚" k="82" /> +<hkern u1="ý" u2="’" k="-82" /> +<hkern u1="ý" u2="?" k="-41" /> +<hkern u1="ý" u2="." k="82" /> +<hkern u1="ý" u2="," k="82" /> +<hkern u1="ý" u2="'" k="-82" /> +<hkern u1="ý" u2=""" k="-82" /> +<hkern u1="þ" u2="”" k="20" /> +<hkern u1="þ" u2="’" k="20" /> +<hkern u1="þ" u2="ý" k="41" /> +<hkern u1="þ" u2="z" k="20" /> +<hkern u1="þ" u2="y" k="41" /> +<hkern u1="þ" u2="x" k="41" /> +<hkern u1="þ" u2="w" k="41" /> +<hkern u1="þ" u2="v" k="41" /> +<hkern u1="þ" u2="'" k="20" /> +<hkern u1="þ" u2=""" k="20" /> +<hkern u1="ÿ" u2="„" k="82" /> +<hkern u1="ÿ" u2="”" k="-82" /> +<hkern u1="ÿ" u2="‚" k="82" /> +<hkern u1="ÿ" u2="’" k="-82" /> +<hkern u1="ÿ" u2="?" k="-41" /> +<hkern u1="ÿ" u2="." k="82" /> +<hkern u1="ÿ" u2="," k="82" /> +<hkern u1="ÿ" u2="'" k="-82" /> +<hkern u1="ÿ" u2=""" k="-82" /> +<hkern u1="Œ" u2="J" k="-123" /> +<hkern u1="Ÿ" u2="„" k="123" /> +<hkern u1="Ÿ" u2="‚" k="123" /> +<hkern u1="Ÿ" u2="œ" k="102" /> +<hkern u1="Ÿ" u2="Œ" k="41" /> +<hkern u1="Ÿ" u2="ü" k="61" /> +<hkern u1="Ÿ" u2="û" k="61" /> +<hkern u1="Ÿ" u2="ú" k="61" /> +<hkern u1="Ÿ" u2="ù" k="61" /> +<hkern u1="Ÿ" u2="ø" k="102" /> +<hkern u1="Ÿ" u2="ö" k="102" /> +<hkern u1="Ÿ" u2="õ" k="102" /> +<hkern u1="Ÿ" u2="ô" k="102" /> +<hkern u1="Ÿ" u2="ó" k="102" /> +<hkern u1="Ÿ" u2="ò" k="102" /> +<hkern u1="Ÿ" u2="ë" k="102" /> +<hkern u1="Ÿ" u2="ê" k="102" /> +<hkern u1="Ÿ" u2="é" k="102" /> +<hkern u1="Ÿ" u2="è" k="102" /> +<hkern u1="Ÿ" u2="ç" k="102" /> +<hkern u1="Ÿ" u2="æ" k="102" /> +<hkern u1="Ÿ" u2="å" k="102" /> +<hkern u1="Ÿ" u2="ä" k="102" /> +<hkern u1="Ÿ" u2="ã" k="102" /> +<hkern u1="Ÿ" u2="â" k="102" /> +<hkern u1="Ÿ" u2="á" k="102" /> +<hkern u1="Ÿ" u2="à" k="102" /> +<hkern u1="Ÿ" u2="Ø" k="41" /> +<hkern u1="Ÿ" u2="Ö" k="41" /> +<hkern u1="Ÿ" u2="Õ" k="41" /> +<hkern u1="Ÿ" u2="Ô" k="41" /> +<hkern u1="Ÿ" u2="Ó" k="41" /> +<hkern u1="Ÿ" u2="Ò" k="41" /> +<hkern u1="Ÿ" u2="Ç" k="41" /> +<hkern u1="Ÿ" u2="Å" k="123" /> +<hkern u1="Ÿ" u2="Ä" k="123" /> +<hkern u1="Ÿ" u2="Ã" k="123" /> +<hkern u1="Ÿ" u2="Â" k="123" /> +<hkern u1="Ÿ" u2="Á" k="123" /> +<hkern u1="Ÿ" u2="À" k="123" /> +<hkern u1="Ÿ" u2="z" k="41" /> +<hkern u1="Ÿ" u2="u" k="61" /> +<hkern u1="Ÿ" u2="s" k="82" /> +<hkern u1="Ÿ" u2="r" k="61" /> +<hkern u1="Ÿ" u2="q" k="102" /> +<hkern u1="Ÿ" u2="p" k="61" /> +<hkern u1="Ÿ" u2="o" k="102" /> +<hkern u1="Ÿ" u2="n" k="61" /> +<hkern u1="Ÿ" u2="m" k="61" /> +<hkern u1="Ÿ" u2="g" k="41" /> +<hkern u1="Ÿ" u2="e" k="102" /> +<hkern u1="Ÿ" u2="d" k="102" /> +<hkern u1="Ÿ" u2="c" k="102" /> +<hkern u1="Ÿ" u2="a" k="102" /> +<hkern u1="Ÿ" u2="Q" k="41" /> +<hkern u1="Ÿ" u2="O" k="41" /> +<hkern u1="Ÿ" u2="G" k="41" /> +<hkern u1="Ÿ" u2="C" k="41" /> +<hkern u1="Ÿ" u2="A" k="123" /> +<hkern u1="Ÿ" u2="?" k="-41" /> +<hkern u1="Ÿ" u2="." k="123" /> +<hkern u1="Ÿ" u2="," k="123" /> +<hkern u1="–" u2="T" k="82" /> +<hkern u1="—" u2="T" k="82" /> +<hkern u1="‘" u2="Ÿ" k="-20" /> +<hkern u1="‘" u2="œ" k="123" /> +<hkern u1="‘" u2="ü" k="61" /> +<hkern u1="‘" u2="û" k="61" /> +<hkern u1="‘" u2="ú" k="61" /> +<hkern u1="‘" u2="ù" k="61" /> +<hkern u1="‘" u2="ø" k="123" /> +<hkern u1="‘" u2="ö" k="123" /> +<hkern u1="‘" u2="õ" k="123" /> +<hkern u1="‘" u2="ô" k="123" /> +<hkern u1="‘" u2="ó" k="123" /> +<hkern u1="‘" u2="ò" k="123" /> +<hkern u1="‘" u2="ë" k="123" /> +<hkern u1="‘" u2="ê" k="123" /> +<hkern u1="‘" u2="é" k="123" /> +<hkern u1="‘" u2="è" k="123" /> +<hkern u1="‘" u2="ç" k="123" /> +<hkern u1="‘" u2="æ" k="82" /> +<hkern u1="‘" u2="å" k="82" /> +<hkern u1="‘" u2="ä" k="82" /> +<hkern u1="‘" u2="ã" k="82" /> +<hkern u1="‘" u2="â" k="82" /> +<hkern u1="‘" u2="á" k="82" /> +<hkern u1="‘" u2="à" k="123" /> +<hkern u1="‘" u2="Ý" k="-20" /> +<hkern u1="‘" u2="Å" k="143" /> +<hkern u1="‘" u2="Ä" k="143" /> +<hkern u1="‘" u2="Ã" k="143" /> +<hkern u1="‘" u2="Â" k="143" /> +<hkern u1="‘" u2="Á" k="143" /> +<hkern u1="‘" u2="À" k="143" /> +<hkern u1="‘" u2="u" k="61" /> +<hkern u1="‘" u2="s" k="61" /> +<hkern u1="‘" u2="r" k="61" /> +<hkern u1="‘" u2="q" k="123" /> +<hkern u1="‘" u2="p" k="61" /> +<hkern u1="‘" u2="o" k="123" /> +<hkern u1="‘" u2="n" k="61" /> +<hkern u1="‘" u2="m" k="61" /> +<hkern u1="‘" u2="g" k="61" /> +<hkern u1="‘" u2="e" k="123" /> +<hkern u1="‘" u2="d" k="123" /> +<hkern u1="‘" u2="c" k="123" /> +<hkern u1="‘" u2="a" k="82" /> +<hkern u1="‘" u2="Y" k="-20" /> +<hkern u1="‘" u2="W" k="-41" /> +<hkern u1="‘" u2="V" k="-41" /> +<hkern u1="‘" u2="T" k="-41" /> +<hkern u1="‘" u2="A" k="143" /> +<hkern u1="’" u2="Ÿ" k="-20" /> +<hkern u1="’" u2="œ" k="123" /> +<hkern u1="’" u2="ü" k="61" /> +<hkern u1="’" u2="û" k="61" /> +<hkern u1="’" u2="ú" k="61" /> +<hkern u1="’" u2="ù" k="61" /> +<hkern u1="’" u2="ø" k="123" /> +<hkern u1="’" u2="ö" k="123" /> +<hkern u1="’" u2="õ" k="123" /> +<hkern u1="’" u2="ô" k="123" /> +<hkern u1="’" u2="ó" k="123" /> +<hkern u1="’" u2="ò" k="123" /> +<hkern u1="’" u2="ë" k="123" /> +<hkern u1="’" u2="ê" k="123" /> +<hkern u1="’" u2="é" k="123" /> +<hkern u1="’" u2="è" k="123" /> +<hkern u1="’" u2="ç" k="123" /> +<hkern u1="’" u2="æ" k="82" /> +<hkern u1="’" u2="å" k="82" /> +<hkern u1="’" u2="ä" k="82" /> +<hkern u1="’" u2="ã" k="82" /> +<hkern u1="’" u2="â" k="82" /> +<hkern u1="’" u2="á" k="82" /> +<hkern u1="’" u2="à" k="123" /> +<hkern u1="’" u2="Ý" k="-20" /> +<hkern u1="’" u2="Å" k="143" /> +<hkern u1="’" u2="Ä" k="143" /> +<hkern u1="’" u2="Ã" k="143" /> +<hkern u1="’" u2="Â" k="143" /> +<hkern u1="’" u2="Á" k="143" /> +<hkern u1="’" u2="À" k="143" /> +<hkern u1="’" u2="u" k="61" /> +<hkern u1="’" u2="s" k="61" /> +<hkern u1="’" u2="r" k="61" /> +<hkern u1="’" u2="q" k="123" /> +<hkern u1="’" u2="p" k="61" /> +<hkern u1="’" u2="o" k="123" /> +<hkern u1="’" u2="n" k="61" /> +<hkern u1="’" u2="m" k="61" /> +<hkern u1="’" u2="g" k="61" /> +<hkern u1="’" u2="e" k="123" /> +<hkern u1="’" u2="d" k="123" /> +<hkern u1="’" u2="c" k="123" /> +<hkern u1="’" u2="a" k="82" /> +<hkern u1="’" u2="Y" k="-20" /> +<hkern u1="’" u2="W" k="-41" /> +<hkern u1="’" u2="V" k="-41" /> +<hkern u1="’" u2="T" k="-41" /> +<hkern u1="’" u2="A" k="143" /> +<hkern u1="‚" u2="Ÿ" k="123" /> +<hkern u1="‚" u2="Œ" k="102" /> +<hkern u1="‚" u2="Ý" k="123" /> +<hkern u1="‚" u2="Ü" k="41" /> +<hkern u1="‚" u2="Û" k="41" /> +<hkern u1="‚" u2="Ú" k="41" /> +<hkern u1="‚" u2="Ù" k="41" /> +<hkern u1="‚" u2="Ø" k="102" /> +<hkern u1="‚" u2="Ö" k="102" /> +<hkern u1="‚" u2="Õ" k="102" /> +<hkern u1="‚" u2="Ô" k="102" /> +<hkern u1="‚" u2="Ó" k="102" /> +<hkern u1="‚" u2="Ò" k="102" /> +<hkern u1="‚" u2="Ç" k="102" /> +<hkern u1="‚" u2="Y" k="123" /> +<hkern u1="‚" u2="W" k="123" /> +<hkern u1="‚" u2="V" k="123" /> +<hkern u1="‚" u2="U" k="41" /> +<hkern u1="‚" u2="T" k="143" /> +<hkern u1="‚" u2="Q" k="102" /> +<hkern u1="‚" u2="O" k="102" /> +<hkern u1="‚" u2="G" k="102" /> +<hkern u1="‚" u2="C" k="102" /> +<hkern u1="“" u2="Ÿ" k="-20" /> +<hkern u1="“" u2="œ" k="123" /> +<hkern u1="“" u2="ü" k="61" /> +<hkern u1="“" u2="û" k="61" /> +<hkern u1="“" u2="ú" k="61" /> +<hkern u1="“" u2="ù" k="61" /> +<hkern u1="“" u2="ø" k="123" /> +<hkern u1="“" u2="ö" k="123" /> +<hkern u1="“" u2="õ" k="123" /> +<hkern u1="“" u2="ô" k="123" /> +<hkern u1="“" u2="ó" k="123" /> +<hkern u1="“" u2="ò" k="123" /> +<hkern u1="“" u2="ë" k="123" /> +<hkern u1="“" u2="ê" k="123" /> +<hkern u1="“" u2="é" k="123" /> +<hkern u1="“" u2="è" k="123" /> +<hkern u1="“" u2="ç" k="123" /> +<hkern u1="“" u2="æ" k="82" /> +<hkern u1="“" u2="å" k="82" /> +<hkern u1="“" u2="ä" k="82" /> +<hkern u1="“" u2="ã" k="82" /> +<hkern u1="“" u2="â" k="82" /> +<hkern u1="“" u2="á" k="82" /> +<hkern u1="“" u2="à" k="123" /> +<hkern u1="“" u2="Ý" k="-20" /> +<hkern u1="“" u2="Å" k="143" /> +<hkern u1="“" u2="Ä" k="143" /> +<hkern u1="“" u2="Ã" k="143" /> +<hkern u1="“" u2="Â" k="143" /> +<hkern u1="“" u2="Á" k="143" /> +<hkern u1="“" u2="À" k="143" /> +<hkern u1="“" u2="u" k="61" /> +<hkern u1="“" u2="s" k="61" /> +<hkern u1="“" u2="r" k="61" /> +<hkern u1="“" u2="q" k="123" /> +<hkern u1="“" u2="p" k="61" /> +<hkern u1="“" u2="o" k="123" /> +<hkern u1="“" u2="n" k="61" /> +<hkern u1="“" u2="m" k="61" /> +<hkern u1="“" u2="g" k="61" /> +<hkern u1="“" u2="e" k="123" /> +<hkern u1="“" u2="d" k="123" /> +<hkern u1="“" u2="c" k="123" /> +<hkern u1="“" u2="a" k="82" /> +<hkern u1="“" u2="Y" k="-20" /> +<hkern u1="“" u2="W" k="-41" /> +<hkern u1="“" u2="V" k="-41" /> +<hkern u1="“" u2="T" k="-41" /> +<hkern u1="“" u2="A" k="143" /> +<hkern u1="„" u2="Ÿ" k="123" /> +<hkern u1="„" u2="Œ" k="102" /> +<hkern u1="„" u2="Ý" k="123" /> +<hkern u1="„" u2="Ü" k="41" /> +<hkern u1="„" u2="Û" k="41" /> +<hkern u1="„" u2="Ú" k="41" /> +<hkern u1="„" u2="Ù" k="41" /> +<hkern u1="„" u2="Ø" k="102" /> +<hkern u1="„" u2="Ö" k="102" /> +<hkern u1="„" u2="Õ" k="102" /> +<hkern u1="„" u2="Ô" k="102" /> +<hkern u1="„" u2="Ó" k="102" /> +<hkern u1="„" u2="Ò" k="102" /> +<hkern u1="„" u2="Ç" k="102" /> +<hkern u1="„" u2="Y" k="123" /> +<hkern u1="„" u2="W" k="123" /> +<hkern u1="„" u2="V" k="123" /> +<hkern u1="„" u2="U" k="41" /> +<hkern u1="„" u2="T" k="143" /> +<hkern u1="„" u2="Q" k="102" /> +<hkern u1="„" u2="O" k="102" /> +<hkern u1="„" u2="G" k="102" /> +<hkern u1="„" u2="C" k="102" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.woff b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000..e231183 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/fonts/OpenSans-Regular-webfont.woff Binary files differdiff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/global.html b/js/scripting-lang/docs/scripting-lang/0.0.1/global.html new file mode 100644 index 0000000..bddf203 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/global.html @@ -0,0 +1,1941 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>JSDoc: Global</title> + + <script src="scripts/prettify/prettify.js"> </script> + <script src="scripts/prettify/lang-css.js"> </script> + <!--[if lt IE 9]> + <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> + <![endif]--> + <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> + <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> +</head> + +<body> + +<div id="main"> + + <h1 class="page-title">Global</h1> + + + + + + +<section> + +<header> + + <h2></h2> + + +</header> + +<article> + <div class="container-overview"> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</dl> + + + + + </div> + + + + + + + + + + + + + + + <h3 class="subsection-title">Members</h3> + + + +<h4 class="name" id="TokenType"><span class="type-signature">(constant) </span>TokenType<span class="type-signature"></span></h4> + + + + +<div class="description"> + Defines all token types used by the lexer and parser. +Each token type represents a distinct syntactic element in the language. + +The token types are organized into categories: +- Literals: NUMBER, STRING, TRUE, FALSE +- Operators: PLUS, MINUS, MULTIPLY, DIVIDE, MODULO, POWER, etc. +- Keywords: WHEN, IS, THEN, FUNCTION, etc. +- Punctuation: LEFT_PAREN, RIGHT_PAREN, SEMICOLON, COMMA, etc. +- Special: IO_IN, IO_OUT, IO_ASSERT, FUNCTION_REF + +This enumeration provides a centralized definition of all possible +token types, ensuring consistency between lexer and parser. +</div> + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lexer.js.html">lexer.js</a>, <a href="lexer.js.html#line20">line 20</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + +<h4 class="name" id="callStackTracker"><span class="type-signature">(constant) </span>callStackTracker<span class="type-signature"></span></h4> + + + + +<div class="description"> + Tracks function calls to help identify infinite recursion +and deep call stacks that cause stack overflow errors. This is essential +for debugging the interpreter's recursive evaluation of AST nodes. + +The tracker maintains a stack of function calls with timestamps and context +information, counts function calls to identify hot paths, and detects +potential infinite recursion by monitoring stack depth. + +This tool is particularly important for the combinator-based architecture +where function calls are the primary execution mechanism, and complex +nested expressions can lead to deep call stacks. +</div> + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line1511">line 1511</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + <h3 class="subsection-title">Methods</h3> + + + + + + + + <h4 class="name" id="debugError"><span class="type-signature"></span>debugError<span class="signature">(message, error<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Logs debug error messages to console when DEBUG environment variable is set. +Provides verbose error output during development while remaining silent in production. + +Debug functions are gated by the DEBUG environment variable, allowing for +verbose output during development and silent operation in production. This +approach makes it easy to trace execution and diagnose issues without +cluttering normal output. +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + <th>Attributes</th> + + + + <th>Default</th> + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>message</code></td> + + + <td class="type"> + + +<span class="param-type">string</span> + + + + </td> + + + <td class="attributes"> + + + + + + </td> + + + + <td class="default"> + + </td> + + + <td class="description last">Debug error message to log</td> + </tr> + + + + <tr> + + <td class="name"><code>error</code></td> + + + <td class="type"> + + +<span class="param-type">Error</span> + + + + </td> + + + <td class="attributes"> + + <optional><br> + + + + + + </td> + + + + <td class="default"> + + null + + </td> + + + <td class="description last">Optional error object to log</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line1487">line 1487</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="debugLog"><span class="type-signature"></span>debugLog<span class="signature">(message, data<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Logs debug messages to console when DEBUG environment variable is set. +Provides verbose output during development while remaining silent in production. + +Debug functions are gated by the DEBUG environment variable, allowing for +verbose output during development and silent operation in production. This +approach makes it easy to trace execution and diagnose issues without +cluttering normal output. +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + <th>Attributes</th> + + + + <th>Default</th> + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>message</code></td> + + + <td class="type"> + + +<span class="param-type">string</span> + + + + </td> + + + <td class="attributes"> + + + + + + </td> + + + + <td class="default"> + + </td> + + + <td class="description last">Debug message to log</td> + </tr> + + + + <tr> + + <td class="name"><code>data</code></td> + + + <td class="type"> + + +<span class="param-type">*</span> + + + + </td> + + + <td class="attributes"> + + <optional><br> + + + + + + </td> + + + + <td class="default"> + + null + + </td> + + + <td class="description last">Optional data to log with the message</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line1464">line 1464</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="executeFile"><span class="type-signature">(async) </span>executeFile<span class="signature">(filePath)</span><span class="type-signature"> → {Promise.<*>}</span></h4> + + + + + + +<div class="description"> + Main entry point for file execution. Handles the complete language +pipeline: file reading, lexical analysis, parsing, and interpretation. + +This function orchestrates the entire language execution process: +1. Reads the source file using cross-platform I/O utilities +2. Tokenizes the source code using the lexer +3. Parses tokens into an AST using the combinator-based parser +4. Interprets the AST using the combinator-based interpreter + +The function provides comprehensive error handling and debug output at each +stage for transparency and troubleshooting. It also manages the call stack +tracker to provide execution statistics and detect potential issues. + +Supports both synchronous and asynchronous execution, with proper +error handling and process exit codes. +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>filePath</code></td> + + + <td class="type"> + + +<span class="param-type">string</span> + + + + </td> + + + + + + <td class="description last">Path to the file to execute</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line1646">line 1646</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + +<h5>Throws:</h5> + + + +<dl> + <dt> + <div class="param-desc"> + For file reading, parsing, or execution errors + </div> + </dt> + <dd></dd> + <dt> + <dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Error</span> + + + </dd> + </dl> + </dt> + <dd></dd> +</dl> + + + + + +<h5>Returns:</h5> + + +<div class="param-desc"> + The result of executing the file +</div> + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Promise.<*></span> + + + </dd> +</dl> + + + + + + + + + + + + + + <h4 class="name" id="initializeStandardLibrary"><span class="type-signature"></span>initializeStandardLibrary<span class="signature">(scope)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Injects higher-order functions and combinator functions into the interpreter's global scope. +These functions provide functional programming utilities and implement the combinator foundation +that eliminates parsing ambiguity by translating all operations to function calls. + +The standard library includes: +- Higher-order functions (map, compose, pipe, apply, filter, reduce, fold, curry) +- Arithmetic combinators (add, subtract, multiply, divide, modulo, power, negate) +- Comparison combinators (equals, notEquals, lessThan, greaterThan, lessEqual, greaterEqual) +- Logical combinators (logicalAnd, logicalOr, logicalXor, logicalNot) +- Enhanced combinators (identity, constant, flip, on, both, either) + +This approach ensures that user code can access these functions as if they were built-in, +without special syntax or reserved keywords. The combinator foundation allows the parser +to translate all operators to function calls, eliminating ambiguity while preserving syntax. + +Functions are written to check argument types at runtime since the language is dynamically +typed and does not enforce arity or types at parse time. +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>scope</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">The global scope object to inject functions into</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line29">line 29</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="interpreter"><span class="type-signature"></span>interpreter<span class="signature">(ast)</span><span class="type-signature"> → {*}</span></h4> + + + + + + +<div class="description"> + Evaluates an AST by walking through each node and performing the +corresponding operations. Manages scope, handles function calls, and supports +both synchronous and asynchronous operations. + +The interpreter implements a combinator-based architecture where all operations +are translated to function calls to standard library combinators. This eliminates +parsing ambiguity while preserving the original syntax. The parser generates +FunctionCall nodes for operators (e.g., x + y becomes add(x, y)), and the +interpreter executes these calls using the combinator functions in the global scope. + +The interpreter uses a global scope for variable storage and function definitions. +Each function call creates a new scope (using prototypal inheritance) to implement +lexical scoping. Immutability is enforced by preventing reassignment in the +global scope. + +The interpreter is split into three functions: evalNode (global), +localEvalNodeWithScope (for function bodies), and localEvalNode (for internal +recursion). This separation allows for correct scope handling and easier debugging. + +Recursive function support is implemented using a forward declaration pattern: +a placeholder function is created in the global scope before evaluation, allowing +the function body to reference itself during evaluation. +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>ast</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Abstract Syntax Tree to evaluate</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line469">line 469</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + +<h5>Throws:</h5> + + + +<dl> + <dt> + <div class="param-desc"> + For evaluation errors like division by zero, undefined variables, etc. + </div> + </dt> + <dd></dd> + <dt> + <dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Error</span> + + + </dd> + </dl> + </dt> + <dd></dd> +</dl> + + + + + +<h5>Returns:</h5> + + +<div class="param-desc"> + The result of evaluating the AST, or a Promise for async operations +</div> + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">*</span> + + + </dd> +</dl> + + + + + + + + + + + + + + <h4 class="name" id="lexer"><span class="type-signature"></span>lexer<span class="signature">(input)</span><span class="type-signature"> → {Array.<Object>}</span></h4> + + + + + + +<div class="description"> + The lexer performs lexical analysis by converting source code +into a stream of tokens. Each token represents a meaningful unit of the +language syntax, such as identifiers, literals, operators, and keywords. + +The lexer implements a character-by-character scanning approach with +lookahead for multi-character tokens. It maintains line and column +information for accurate error reporting and debugging. + +Key features: +- Handles whitespace and comments (single-line and multi-line) +- Recognizes all language constructs including operators, keywords, and literals +- Supports string literals with escape sequences +- Provides detailed position information for error reporting +- Cross-platform compatibility (Node.js, Bun, browser) + +The lexer is designed to be robust and provide clear error messages +for malformed input, making it easier to debug syntax errors in user code. +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>input</code></td> + + + <td class="type"> + + +<span class="param-type">string</span> + + + + </td> + + + + + + <td class="description last">The source code to tokenize</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lexer.js.html">lexer.js</a>, <a href="lexer.js.html#line91">line 91</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + +<h5>Throws:</h5> + + + +<dl> + <dt> + <div class="param-desc"> + For unexpected characters or malformed tokens + </div> + </dt> + <dd></dd> + <dt> + <dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Error</span> + + + </dd> + </dl> + </dt> + <dd></dd> +</dl> + + + + + +<h5>Returns:</h5> + + +<div class="param-desc"> + Array of token objects with type, value, line, and column +</div> + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Array.<Object></span> + + + </dd> +</dl> + + + + + + + + + + + + + + <h4 class="name" id="main"><span class="type-signature">(async) </span>main<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Processes command line arguments and executes the specified file. +Provides helpful error messages for incorrect usage. + +The language is designed for file execution only (no REPL), so the CLI +enforces this usage and provides helpful error messages for incorrect invocation. +The function validates that exactly one file path is provided and that the +file has the correct .txt extension. + +Exits with appropriate error codes for different failure scenarios. +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line1718">line 1718</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="parser"><span class="type-signature"></span>parser<span class="signature">(tokens)</span><span class="type-signature"> → {Object}</span></h4> + + + + + + +<div class="description"> + The parser implements a combinator-based architecture where all +operators are translated to function calls to standard library combinators. +This eliminates parsing ambiguity while preserving the original syntax. + +The parser uses a recursive descent approach with proper operator precedence +handling. Each operator expression (e.g., x + y) is translated to a FunctionCall +node (e.g., add(x, y)) that will be executed by the interpreter using the +corresponding combinator function. + +Key architectural decisions: +- All operators become FunctionCall nodes to eliminate ambiguity +- Operator precedence is handled through recursive parsing functions +- Function calls are detected by looking for identifiers followed by expressions +- When expressions and case patterns are parsed with special handling +- Table literals and access are parsed as structured data + +The parser maintains a current token index and advances through the token +stream, building the AST bottom-up from primary expressions to complex +logical expressions. +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>tokens</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of tokens from the lexer</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="parser.js.html">parser.js</a>, <a href="parser.js.html#line34">line 34</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + +<h5>Throws:</h5> + + + +<dl> + <dt> + <div class="param-desc"> + For parsing errors like unexpected tokens or missing delimiters + </div> + </dt> + <dd></dd> + <dt> + <dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Error</span> + + + </dd> + </dl> + </dt> + <dd></dd> +</dl> + + + + + +<h5>Returns:</h5> + + +<div class="param-desc"> + Abstract Syntax Tree with program body +</div> + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Object</span> + + + </dd> +</dl> + + + + + + + + + + + + + + <h4 class="name" id="readFile"><span class="type-signature">(async) </span>readFile<span class="signature">(filePath)</span><span class="type-signature"> → {Promise.<string>}</span></h4> + + + + + + +<div class="description"> + Handles file reading across different platforms (Node.js, Bun, browser) +with appropriate fallbacks for each environment. This function is essential for +the language's file execution model where scripts are loaded from .txt files. + +The function prioritizes ES modules compatibility by using dynamic import, +but falls back to require for older Node.js versions. Browser environments +are not supported for file I/O operations. + +This cross-platform approach ensures the language can run in various JavaScript +environments while maintaining consistent behavior. +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>filePath</code></td> + + + <td class="type"> + + +<span class="param-type">string</span> + + + + </td> + + + + + + <td class="description last">Path to the file to read</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line1604">line 1604</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + +<h5>Throws:</h5> + + + +<dl> + <dt> + <div class="param-desc"> + For file reading errors + </div> + </dt> + <dd></dd> + <dt> + <dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Error</span> + + + </dd> + </dl> + </dt> + <dd></dd> +</dl> + + + + + +<h5>Returns:</h5> + + +<div class="param-desc"> + File contents as a string +</div> + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Promise.<string></span> + + + </dd> +</dl> + + + + + + + + + + + + + +</article> + +</section> + + + + +</div> + +<nav> + <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#TokenType">TokenType</a></li><li><a href="global.html#callStackTracker">callStackTracker</a></li><li><a href="global.html#debugError">debugError</a></li><li><a href="global.html#debugLog">debugLog</a></li><li><a href="global.html#executeFile">executeFile</a></li><li><a href="global.html#initializeStandardLibrary">initializeStandardLibrary</a></li><li><a href="global.html#interpreter">interpreter</a></li><li><a href="global.html#lexer">lexer</a></li><li><a href="global.html#main">main</a></li><li><a href="global.html#parser">parser</a></li><li><a href="global.html#readFile">readFile</a></li></ul> +</nav> + +<br class="clear"> + +<footer> + Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.3</a> on Sun Jul 27 2025 10:38:30 GMT-0400 (Eastern Daylight Time) +</footer> + +<script> prettyPrint(); </script> +<script src="scripts/linenumber.js"> </script> +</body> +</html> \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/index.html b/js/scripting-lang/docs/scripting-lang/0.0.1/index.html new file mode 100644 index 0000000..702a362 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/index.html @@ -0,0 +1,363 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>JSDoc: Home</title> + + <script src="scripts/prettify/prettify.js"> </script> + <script src="scripts/prettify/lang-css.js"> </script> + <!--[if lt IE 9]> + <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> + <![endif]--> + <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> + <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> +</head> + +<body> + +<div id="main"> + + <h1 class="page-title">Home</h1> + + + + + + + + + <h3>scripting-lang 0.0.1</h3> + + + + + + + + + + + + + + + + <section> + <article><h1>Simple Scripting Language</h1> +<p>A functional programming language with immutable variables, first-class functions, and pattern matching, built on a combinator-based foundation.</p> +<h2>Features</h2> +<ul> +<li><strong>Immutable Variables</strong>: Variables cannot be reassigned</li> +<li><strong>First-Class Functions</strong>: Functions can be passed as arguments and stored in data structures</li> +<li><strong>Lexical Scoping</strong>: Functions create their own scope</li> +<li><strong>Pattern Matching</strong>: Case expressions with wildcard support</li> +<li><strong>Table Literals</strong>: Lua-style tables with both array-like and key-value entries</li> +<li><strong>Standard Library</strong>: Built-in higher-order functions (<code>map</code>, <code>compose</code>, <code>pipe</code>, <code>apply</code>, <code>filter</code>, <code>reduce</code>, <code>fold</code>, <code>curry</code>)</li> +<li><strong>Combinator Foundation</strong>: All operations are implemented as function calls under the hood</li> +<li><strong>IO Operations</strong>: Built-in input/output operations (<code>..in</code>, <code>..out</code>, <code>..assert</code>)</li> +<li><strong>Floating Point Arithmetic</strong>: Full support for decimal numbers</li> +<li><strong>Unary Minus</strong>: Support for negative numbers (e.g., <code>-1</code>, <code>-3.14</code>)</li> +</ul> +<h2>Current Implementation Status</h2> +<h3>✅ Completed Features</h3> +<ul> +<li><strong>Core Combinators</strong>: All arithmetic, comparison, logical, and higher-order combinators implemented</li> +<li><strong>Parser Translation</strong>: All operators translated to combinator function calls</li> +<li><strong>Syntax Preservation</strong>: All existing syntax works unchanged</li> +<li><strong>Standard Library</strong>: Complete set of higher-order functions</li> +<li><strong>Basic Operations</strong>: Arithmetic, comparison, logical operations</li> +<li><strong>Function Definitions</strong>: Arrow functions and function declarations</li> +<li><strong>Tables</strong>: Table literals and bracket notation access</li> +<li><strong>IO Operations</strong>: Input, output, and assertions</li> +</ul> +<h3>🔄 In Progress</h3> +<ul> +<li><strong>Recursive Functions</strong>: Support for functions that call themselves</li> +<li><strong>Advanced Pattern Matching</strong>: Extended when expression patterns</li> +<li><strong>Dot Notation</strong>: Table access with dot notation (<code>table.property</code>)</li> +<li><strong>Multi-parameter Cases</strong>: Case expressions with multiple parameters</li> +</ul> +<h2>Syntax</h2> +<h3>Basic Operations</h3> +<pre class="prettyprint source"><code>/* Arithmetic */ +x : 5 + 3; +y : 10 - 2; +z : 4 * 3; +w : 15 / 3; +neg : -5; /* Unary minus */ + +/* Comparisons */ +result : x > y; +equal : a = b; +not_equal : a != b; + +/* Logical */ +and_result : true and false; +or_result : true or false; +</code></pre> +<h3>Variables and Functions</h3> +<pre class="prettyprint source"><code>/* Immutable variables */ +x : 42; +y : "hello"; + +/* Function definition */ +f : x -> x * 2; + +/* Function call */ +result : f 5; +</code></pre> +<h3>Tables</h3> +<pre class="prettyprint source"><code>/* Table literal */ +table : {1, 2, 3, key: "value"}; + +/* Table access */ +first : table[1]; +value : table.key; /* Coming soon */ +nested : table.key.subkey; /* Coming soon */ +</code></pre> +<h3>Pattern Matching</h3> +<pre class="prettyprint source"><code>/* Case expression */ +result : when x is + 1 then "one" + 2 then "two" + _ then "other"; +</code></pre> +<h3>IO Operations</h3> +<pre class="prettyprint source"><code>/* Output */ +..out "Hello, World!"; + +/* Input */ +name : ..in; + +/* Assertion */ +..assert x = 5; +</code></pre> +<h3>Standard Library</h3> +<pre class="prettyprint source"><code>/* Map */ +double : x -> x * 2; +squared : map @double 5; + +/* Filter */ +isPositive : x -> x > 0; +filtered : filter @isPositive 5; + +/* Compose */ +f : x -> x + 1; +g : x -> x * 2; +h : compose @f @g; +result : h 5; /* (5 * 2) + 1 = 11 */ +</code></pre> +<h2>Usage</h2> +<h3>Running Scripts</h3> +<pre class="prettyprint source lang-bash"><code>node lang.js script.txt +</code></pre> +<h3>Testing</h3> +<p>The project uses a structured testing approach with unit and integration tests:</p> +<h4>Unit Tests</h4> +<p>Located in <code>tests/</code> directory, each focusing on a specific language feature:</p> +<ul> +<li><code>01_lexer_basic.txt</code> - Basic lexer functionality ✅</li> +<li><code>02_arithmetic_operations.txt</code> - Arithmetic operations ✅</li> +<li><code>03_comparison_operators.txt</code> - Comparison operators ✅</li> +<li><code>04_logical_operators.txt</code> - Logical operators ✅</li> +<li><code>05_io_operations.txt</code> - IO operations ✅</li> +<li><code>06_function_definitions.txt</code> - Function definitions ✅</li> +<li><code>07_case_expressions.txt</code> - Case expressions and pattern matching 🔄</li> +<li><code>08_first_class_functions.txt</code> - First-class function features ✅</li> +<li><code>09_tables.txt</code> - Table literals and access ✅</li> +<li><code>10_standard_library.txt</code> - Standard library functions ✅</li> +<li><code>11_edge_cases.txt</code> - Edge cases 🔄</li> +<li><code>12_advanced_tables.txt</code> - Advanced table features 🔄</li> +<li><code>13_standard_library_complete.txt</code> - Complete standard library ✅</li> +<li><code>14_error_handling.txt</code> - Error handling 🔄</li> +<li><code>15_multi_parameter_case.txt</code> - Multi-parameter case expressions 🔄</li> +</ul> +<h4>Integration Tests</h4> +<p>Test combinations of multiple features:</p> +<ul> +<li><code>integration_01_basic_features.txt</code> - Basic feature combinations ✅</li> +<li><code>integration_02_pattern_matching.txt</code> - Pattern matching with other features 🔄</li> +<li><code>integration_03_functional_programming.txt</code> - Functional programming patterns ✅</li> +</ul> +<h4>Running Tests</h4> +<pre class="prettyprint source lang-bash"><code># Run all tests +./run_tests.sh + +# Run individual tests +node lang.js tests/01_lexer_basic.txt +node lang.js tests/integration_01_basic_features.txt +# or with bun +bun run lang.js tests/01_lexer_basic.txt +</code></pre> +<h2>Implementation Details</h2> +<h3>Architecture</h3> +<ul> +<li><strong>Lexer</strong>: Tokenizes input into tokens (numbers, identifiers, operators, etc.)</li> +<li><strong>Parser</strong>: Builds Abstract Syntax Tree (AST) from tokens, translating operators to combinator calls</li> +<li><strong>Interpreter</strong>: Executes AST with scope management and combinator function calls</li> +</ul> +<h3>Key Components</h3> +<ul> +<li><strong>Token Types</strong>: Supports all basic operators, literals, and special tokens</li> +<li><strong>AST Nodes</strong>: Expression, statement, and declaration nodes</li> +<li><strong>Scope Management</strong>: Lexical scoping with proper variable resolution</li> +<li><strong>Combinator Foundation</strong>: All operations implemented as function calls</li> +<li><strong>Error Handling</strong>: Comprehensive error reporting for parsing and execution</li> +</ul> +<h2>Recent Fixes</h2> +<h3>✅ Combinator Foundation Implementation (Latest)</h3> +<ul> +<li><strong>Issue</strong>: Parser ambiguity between function application and operator expressions</li> +<li><strong>Solution</strong>: Implemented comprehensive combinator foundation</li> +<li><strong>Status</strong>: ✅ Completed - All operators now translate to combinator function calls</li> +<li><strong>Impact</strong>: Eliminated parsing ambiguity while preserving syntax</li> +</ul> +<h3>✅ Standard Library Function Naming Conflicts</h3> +<ul> +<li><strong>Issue</strong>: Test functions using names that conflict with standard library combinators</li> +<li><strong>Solution</strong>: Renamed test functions to avoid conflicts (e.g., <code>add</code> → <code>add_func</code>)</li> +<li><strong>Status</strong>: ✅ Resolved - All tests now use unique function names</li> +</ul> +<h3>✅ Parser Ambiguity with Unary Minus Arguments</h3> +<ul> +<li><strong>Issue</strong>: <code>filter @isPositive -3</code> was incorrectly parsed as binary operation</li> +<li><strong>Root Cause</strong>: Parser treating <code>FunctionReference MINUS</code> as binary minus operation</li> +<li><strong>Solution</strong>: Added special case in <code>parseExpression()</code> to handle <code>FunctionReference MINUS</code> pattern</li> +<li><strong>Status</strong>: ✅ Resolved - Standard library functions now work with negative arguments</li> +</ul> +<h3>✅ Unary Minus Operator</h3> +<ul> +<li><strong>Issue</strong>: Stack overflow when parsing negative numbers (e.g., <code>-1</code>)</li> +<li><strong>Root Cause</strong>: Parser lacked specific handling for unary minus operator</li> +<li><strong>Solution</strong>: Added <code>UnaryMinusExpression</code> parsing and evaluation</li> +<li><strong>Status</strong>: ✅ Resolved - All tests passing</li> +</ul> +<h3>✅ IO Operation Parsing</h3> +<ul> +<li><strong>Issue</strong>: IO operations not parsed correctly at top level</li> +<li><strong>Solution</strong>: Moved IO parsing to proper precedence level</li> +<li><strong>Status</strong>: ✅ Resolved</li> +</ul> +<h3>✅ Decimal Number Support</h3> +<ul> +<li><strong>Issue</strong>: Decimal numbers not handled correctly</li> +<li><strong>Solution</strong>: Updated lexer and interpreter to use <code>parseFloat()</code></li> +<li><strong>Status</strong>: ✅ Resolved</li> +</ul> +<h2>Known Issues</h2> +<h3>🔄 Recursive Function Support</h3> +<ul> +<li><strong>Issue</strong>: Functions cannot call themselves recursively</li> +<li><strong>Example</strong>: <code>factorial : n -> when n is 0 then 1 _ then n * factorial (n - 1);</code> fails</li> +<li><strong>Root Cause</strong>: Function not available in global scope when body is evaluated</li> +<li><strong>Status</strong>: 🔄 In Progress - Implementing forward declaration pattern</li> +<li><strong>Impact</strong>: Recursive algorithms cannot be implemented</li> +</ul> +<h3>🔄 When Expression Pattern Parsing</h3> +<ul> +<li><strong>Issue</strong>: When expressions only support basic patterns (identifiers, numbers, strings, wildcards)</li> +<li><strong>Example</strong>: <code>when x is < 0 then "negative" _ then "non-negative"</code> fails</li> +<li><strong>Root Cause</strong>: Parser not handling comparison operators in patterns</li> +<li><strong>Status</strong>: 🔄 In Progress - Extending pattern parsing</li> +<li><strong>Impact</strong>: Limited pattern matching capabilities</li> +</ul> +<h3>🔄 Dot Notation for Table Access</h3> +<ul> +<li><strong>Issue</strong>: Table access only supports bracket notation</li> +<li><strong>Example</strong>: <code>table.property</code> fails to parse</li> +<li><strong>Root Cause</strong>: Parser not handling dot notation</li> +<li><strong>Status</strong>: 🔄 In Progress - Adding dot notation support</li> +<li><strong>Impact</strong>: Less convenient table access syntax</li> +</ul> +<h3>🔄 Multi-parameter Case Expressions</h3> +<ul> +<li><strong>Issue</strong>: Multi-parameter case expressions not parsed correctly</li> +<li><strong>Example</strong>: <code>when x y is 0 0 then "both zero" _ _ then "not both zero"</code> fails</li> +<li><strong>Root Cause</strong>: Parser not handling multiple parameters in case expressions</li> +<li><strong>Status</strong>: 🔄 In Progress - Extending case expression parsing</li> +<li><strong>Impact</strong>: Limited pattern matching with multiple values</li> +</ul> +<h3>🔄 When Expression Parsing Precedence</h3> +<ul> +<li><strong>Issue</strong>: When expressions not parsed correctly in all contexts</li> +<li><strong>Example</strong>: Some when expressions fail with "Unexpected token in parsePrimary: WHEN"</li> +<li><strong>Root Cause</strong>: Parser precedence not handling when expressions properly</li> +<li><strong>Status</strong>: 🔄 In Progress - Adjusting parser precedence</li> +<li><strong>Impact</strong>: When expressions may fail in certain contexts</li> +</ul> +<h2>Development</h2> +<h3>File Structure</h3> +<pre class="prettyprint source"><code>. +├── lang.js # Main implementation with combinator foundation +├── parser.js # Parser with operator-to-combinator translation +├── lexer.js # Lexical analyzer +├── tests/ # Unit and integration tests +│ ├── 01_lexer_basic.txt +│ ├── 02_arithmetic_operations.txt +│ ├── ... +│ ├── integration_01_basic_features.txt +│ ├── integration_02_pattern_matching.txt +│ └── integration_03_functional_programming.txt +├── run_tests.sh # Test runner script +├── COMBINATORS.md # Combinator foundation documentation +└── README.md # This file +</code></pre> +<h3>Debugging</h3> +<p>Enable debug mode by setting <code>DEBUG=true</code>:</p> +<pre class="prettyprint source lang-bash"><code>DEBUG=true node lang.js script.txt +</code></pre> +<h2>Combinator Foundation</h2> +<p>The language is built on a combinator foundation where all operations are implemented as function calls:</p> +<h3>Internal Translation</h3> +<pre class="prettyprint source lang-javascript"><code>// x - y becomes internally: +subtract(x, y) + +// filter @isPositive -3 becomes internally: +filter(isPositive, negate(3)) + +// x + y becomes internally: +add(x, y) + +// true and false becomes internally: +logicalAnd(true, false) +</code></pre> +<h3>Benefits</h3> +<ul> +<li><strong>Eliminates Parsing Ambiguity</strong>: Every operation is a function call</li> +<li><strong>Preserves Syntax</strong>: Zero breaking changes to existing code</li> +<li><strong>Functional Foundation</strong>: Everything is a function under the hood</li> +<li><strong>Extensible</strong>: Easy to add new combinators and patterns</li> +<li><strong>Consistent Semantics</strong>: All operations follow the same pattern</li> +</ul> +<p>For detailed information about the combinator foundation, see <a href="COMBINATORS.md">COMBINATORS.md</a>.</p> +<h2>Contributing</h2> +<ol> +<li>Create focused unit tests for new features</li> +<li>Add integration tests for feature combinations</li> +<li>Update documentation</li> +<li>Run the full test suite before submitting changes</li> +<li>Follow the combinator foundation approach for new operations</li> +</ol></article> + </section> + + + + + + +</div> + +<nav> + <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#TokenType">TokenType</a></li><li><a href="global.html#callStackTracker">callStackTracker</a></li><li><a href="global.html#debugError">debugError</a></li><li><a href="global.html#debugLog">debugLog</a></li><li><a href="global.html#executeFile">executeFile</a></li><li><a href="global.html#initializeStandardLibrary">initializeStandardLibrary</a></li><li><a href="global.html#interpreter">interpreter</a></li><li><a href="global.html#lexer">lexer</a></li><li><a href="global.html#main">main</a></li><li><a href="global.html#parser">parser</a></li><li><a href="global.html#readFile">readFile</a></li></ul> +</nav> + +<br class="clear"> + +<footer> + Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.3</a> on Sun Jul 27 2025 10:38:30 GMT-0400 (Eastern Daylight Time) +</footer> + +<script> prettyPrint(); </script> +<script src="scripts/linenumber.js"> </script> +</body> +</html> \ No newline at end of file diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/lang.js.html b/js/scripting-lang/docs/scripting-lang/0.0.1/lang.js.html new file mode 100644 index 0000000..7559cd6 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/lang.js.html @@ -0,0 +1,1791 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>JSDoc: Source: lang.js</title> + + <script src="scripts/prettify/prettify.js"> </script> + <script src="scripts/prettify/lang-css.js"> </script> + <!--[if lt IE 9]> + <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> + <![endif]--> + <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> + <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> +</head> + +<body> + +<div id="main"> + + <h1 class="page-title">Source: lang.js</h1> + + + + + + + <section> + <article> + <pre class="prettyprint source linenums"><code>// Cross-platform scripting language implementation +// Supports Node.js, Bun, and browser environments + +import { lexer, TokenType } from './lexer.js'; +import { parser } from './parser.js'; + +/** + * Initializes the standard library in the provided scope. + * + * @param {Object} scope - The global scope object to inject functions into + * @description Injects higher-order functions and combinator functions into the interpreter's global scope. + * These functions provide functional programming utilities and implement the combinator foundation + * that eliminates parsing ambiguity by translating all operations to function calls. + * + * The standard library includes: + * - Higher-order functions (map, compose, pipe, apply, filter, reduce, fold, curry) + * - Arithmetic combinators (add, subtract, multiply, divide, modulo, power, negate) + * - Comparison combinators (equals, notEquals, lessThan, greaterThan, lessEqual, greaterEqual) + * - Logical combinators (logicalAnd, logicalOr, logicalXor, logicalNot) + * - Enhanced combinators (identity, constant, flip, on, both, either) + * + * This approach ensures that user code can access these functions as if they were built-in, + * without special syntax or reserved keywords. The combinator foundation allows the parser + * to translate all operators to function calls, eliminating ambiguity while preserving syntax. + * + * Functions are written to check argument types at runtime since the language is dynamically + * typed and does not enforce arity or types at parse time. + */ +function initializeStandardLibrary(scope) { + /** + * Map: Apply a function to a value + * @param {Function} f - Function to apply + * @param {*} x - Value to apply function to + * @returns {*} Result of applying f to x + * @throws {Error} When first argument is not a function + */ + scope.map = function(f, x) { + if (typeof f === 'function') { + return f(x); + } else { + throw new Error('map: first argument must be a function'); + } + }; + + /** + * Compose: Compose two functions (f ∘ g)(x) = f(g(x)) + * @param {Function} f - Outer function + * @param {Function} g - Inner function + * @param {*} [x] - Optional argument to apply composed function to + * @returns {Function|*} Either a composed function or the result of applying it + * @throws {Error} When first two arguments are not functions + */ + scope.compose = function(f, g, x) { + if (typeof f === 'function' && typeof g === 'function') { + if (arguments.length === 3) { + return f(g(x)); + } else { + return function(x) { + return f(g(x)); + }; + } + } else { + throw new Error('compose: first two arguments must be functions'); + } + }; + + /** + * Curry: Apply a function to arguments (simplified currying) + * @param {Function} f - Function to curry + * @param {*} x - First argument + * @param {*} y - Second argument + * @returns {*} Result of applying f to x and y + * @throws {Error} When first argument is not a function + */ + scope.curry = function(f, x, y) { + if (typeof f === 'function') { + return f(x, y); + } else { + throw new Error('curry: first argument must be a function'); + } + }; + + /** + * Apply: Apply a function to an argument (explicit function application) + * @param {Function} f - Function to apply + * @param {*} x - Argument to apply function to + * @returns {*} Result of applying f to x + * @throws {Error} When first argument is not a function + */ + scope.apply = function(f, x) { + if (typeof f === 'function') { + return f(x); + } else { + throw new Error('apply: first argument must be a function'); + } + }; + + /** + * Pipe: Compose functions in left-to-right order (opposite of compose) + * @param {Function} f - First function + * @param {Function} g - Second function + * @param {*} [x] - Optional argument to apply piped function to + * @returns {Function|*} Either a piped function or the result of applying it + * @throws {Error} When first two arguments are not functions + */ + scope.pipe = function(f, g, x) { + if (typeof f === 'function' && typeof g === 'function') { + if (arguments.length === 3) { + return g(f(x)); + } else { + return function(x) { + return g(f(x)); + }; + } + } else { + throw new Error('pipe: first two arguments must be functions'); + } + }; + + /** + * Filter: Filter a value based on a predicate + * @param {Function} p - Predicate function + * @param {*} x - Value to test + * @returns {*|0} The value if predicate is true, 0 otherwise + * @throws {Error} When first argument is not a function + */ + scope.filter = function(p, x) { + if (typeof p === 'function') { + return p(x) ? x : 0; + } else { + throw new Error('filter: first argument must be a function'); + } + }; + + /** + * Reduce: Reduce two values using a binary function + * @param {Function} f - Binary function + * @param {*} init - Initial value + * @param {*} x - Second value + * @returns {*} Result of applying f to init and x + * @throws {Error} When first argument is not a function + */ + scope.reduce = function(f, init, x) { + if (typeof f === 'function') { + return f(init, x); + } else { + throw new Error('reduce: first argument must be a function'); + } + }; + + /** + * Fold: Same as reduce, but more explicit about the folding direction + * @param {Function} f - Binary function + * @param {*} init - Initial value + * @param {*} x - Second value + * @returns {*} Result of applying f to init and x + * @throws {Error} When first argument is not a function + */ + scope.fold = function(f, init, x) { + if (typeof f === 'function') { + return f(init, x); + } else { + throw new Error('fold: first argument must be a function'); + } + }; + + // ===== ARITHMETIC COMBINATORS ===== + + /** + * Add: Add two numbers + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Sum of x and y + */ + scope.add = function(x, y) { + return x + y; + }; + + /** + * Subtract: Subtract second number from first + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Difference of x and y + */ + scope.subtract = function(x, y) { + return x - y; + }; + + /** + * Multiply: Multiply two numbers + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Product of x and y + */ + scope.multiply = function(x, y) { + return x * y; + }; + + /** + * Divide: Divide first number by second + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Quotient of x and y + * @throws {Error} When second argument is zero + */ + scope.divide = function(x, y) { + if (y === 0) { + throw new Error('Division by zero'); + } + return x / y; + }; + + /** + * Modulo: Get remainder of division + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Remainder of x divided by y + */ + scope.modulo = function(x, y) { + return x % y; + }; + + /** + * Power: Raise first number to power of second + * @param {number} x - Base number + * @param {number} y - Exponent + * @returns {number} x raised to the power of y + */ + scope.power = function(x, y) { + return Math.pow(x, y); + }; + + /** + * Negate: Negate a number + * @param {number} x - Number to negate + * @returns {number} Negated value of x + */ + scope.negate = function(x) { + return -x; + }; + + // ===== COMPARISON COMBINATORS ===== + + /** + * Equals: Check if two values are equal + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x equals y + */ + scope.equals = function(x, y) { + return x === y; + }; + + /** + * NotEquals: Check if two values are not equal + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x does not equal y + */ + scope.notEquals = function(x, y) { + return x !== y; + }; + + /** + * LessThan: Check if first value is less than second + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x < y + */ + scope.lessThan = function(x, y) { + return x < y; + }; + + /** + * GreaterThan: Check if first value is greater than second + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x > y + */ + scope.greaterThan = function(x, y) { + return x > y; + }; + + /** + * LessEqual: Check if first value is less than or equal to second + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x <= y + */ + scope.lessEqual = function(x, y) { + return x <= y; + }; + + /** + * GreaterEqual: Check if first value is greater than or equal to second + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x >= y + */ + scope.greaterEqual = function(x, y) { + return x >= y; + }; + + // ===== LOGICAL COMBINATORS ===== + + /** + * LogicalAnd: Logical AND of two values + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if both x and y are truthy + */ + scope.logicalAnd = function(x, y) { + return !!(x && y); + }; + + /** + * LogicalOr: Logical OR of two values + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if either x or y is truthy + */ + scope.logicalOr = function(x, y) { + return !!(x || y); + }; + + /** + * LogicalXor: Logical XOR of two values + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if exactly one of x or y is truthy + */ + scope.logicalXor = function(x, y) { + return !!((x && !y) || (!x && y)); + }; + + /** + * LogicalNot: Logical NOT of a value + * @param {*} x - Value to negate + * @returns {boolean} True if x is falsy, false if x is truthy + */ + scope.logicalNot = function(x) { + return !x; + }; + + // ===== ASSIGNMENT COMBINATOR ===== + + /** + * Assign: Assign a value to a variable name + * @param {string} name - Variable name + * @param {*} value - Value to assign + * @returns {*} The assigned value + * @throws {Error} When trying to reassign an immutable variable + * @note This function needs access to the global scope, so it will be + * set up during interpreter initialization + */ + // Note: assign will be set up in the interpreter with access to globalScope + + // ===== ENHANCED HIGHER-ORDER COMBINATORS ===== + + /** + * Identity: Return the input unchanged + * @param {*} x - Any value + * @returns {*} The same value + */ + scope.identity = function(x) { + return x; + }; + + /** + * Constant: Create a function that always returns the same value + * @param {*} x - Value to return + * @param {*} [y] - Optional second argument (ignored) + * @returns {*} The value x, or a function if only one argument provided + */ + scope.constant = function(x, y) { + if (arguments.length === 2) { + return x; + } else { + return function(y) { + return x; + }; + } + }; + + /** + * Flip: Flip the order of arguments for a binary function + * @param {Function} f - Binary function + * @param {*} [x] - Optional first argument + * @param {*} [y] - Optional second argument + * @returns {Function|*} Function with flipped argument order, or result if arguments provided + */ + scope.flip = function(f, x, y) { + if (arguments.length === 3) { + return f(y, x); + } else { + return function(x, y) { + return f(y, x); + }; + } + }; + + /** + * On: Apply a function to the results of another function + * @param {Function} f - Outer function + * @param {Function} g - Inner function + * @returns {Function} Function that applies f to the results of g + */ + scope.on = function(f, g) { + return function(x, y) { + return f(g(x), g(y)); + }; + }; + + /** + * Both: Check if both predicates are true + * @param {Function} f - First predicate + * @param {Function} g - Second predicate + * @returns {Function} Function that returns true if both predicates are true + */ + scope.both = function(f, g) { + return function(x) { + return f(x) && g(x); + }; + }; + + /** + * Either: Check if either predicate is true + * @param {Function} f - First predicate + * @param {Function} g - Second predicate + * @returns {Function} Function that returns true if either predicate is true + */ + scope.either = function(f, g) { + return function(x) { + return f(x) || g(x); + }; + }; +} + +/** + * Interpreter: Walks the AST and evaluates each node. + * + * @param {Object} ast - Abstract Syntax Tree to evaluate + * @returns {*} The result of evaluating the AST, or a Promise for async operations + * @throws {Error} For evaluation errors like division by zero, undefined variables, etc. + * + * @description Evaluates an AST by walking through each node and performing the + * corresponding operations. Manages scope, handles function calls, and supports + * both synchronous and asynchronous operations. + * + * The interpreter implements a combinator-based architecture where all operations + * are translated to function calls to standard library combinators. This eliminates + * parsing ambiguity while preserving the original syntax. The parser generates + * FunctionCall nodes for operators (e.g., x + y becomes add(x, y)), and the + * interpreter executes these calls using the combinator functions in the global scope. + * + * The interpreter uses a global scope for variable storage and function definitions. + * Each function call creates a new scope (using prototypal inheritance) to implement + * lexical scoping. Immutability is enforced by preventing reassignment in the + * global scope. + * + * The interpreter is split into three functions: evalNode (global), + * localEvalNodeWithScope (for function bodies), and localEvalNode (for internal + * recursion). This separation allows for correct scope handling and easier debugging. + * + * Recursive function support is implemented using a forward declaration pattern: + * a placeholder function is created in the global scope before evaluation, allowing + * the function body to reference itself during evaluation. + */ +function interpreter(ast) { + const globalScope = {}; + initializeStandardLibrary(globalScope); + + // Debug: Check if combinators are available + if (process.env.DEBUG) { + console.log('[DEBUG] Available functions in global scope:', Object.keys(globalScope)); + console.log('[DEBUG] add function exists:', typeof globalScope.add === 'function'); + console.log('[DEBUG] subtract function exists:', typeof globalScope.subtract === 'function'); + } + + // Reset call stack tracker at the start of interpretation + callStackTracker.reset(); + + /** + * Evaluates AST nodes in the global scope. + * + * @param {Object} node - AST node to evaluate + * @returns {*} The result of evaluating the node + * @throws {Error} For evaluation errors + * + * @description Main evaluation function that handles all node types in the + * global scope context. This function processes the core language constructs + * and delegates to combinator functions for all operations. + * + * The function implements the forward declaration pattern for recursive functions: + * when a function assignment is detected, a placeholder is created in the global + * scope before evaluation, allowing the function body to reference itself. + */ + function evalNode(node) { + callStackTracker.push('evalNode', node?.type || 'unknown'); + + try { + if (!node) { + return undefined; + } + switch (node.type) { + case 'NumberLiteral': + return parseFloat(node.value); + case 'StringLiteral': + return node.value; + case 'BooleanLiteral': + return node.value; + case 'PlusExpression': + return evalNode(node.left) + evalNode(node.right); + case 'MinusExpression': + return evalNode(node.left) - evalNode(node.right); + case 'MultiplyExpression': + return evalNode(node.left) * evalNode(node.right); + case 'DivideExpression': + const divisor = evalNode(node.right); + if (divisor === 0) { + throw new Error('Division by zero'); + } + return evalNode(node.left) / evalNode(node.right); + case 'ModuloExpression': + return evalNode(node.left) % evalNode(node.right); + case 'PowerExpression': + return Math.pow(evalNode(node.left), evalNode(node.right)); + case 'EqualsExpression': + return evalNode(node.left) === evalNode(node.right); + case 'LessThanExpression': + return evalNode(node.left) < evalNode(node.right); + case 'GreaterThanExpression': + return evalNode(node.left) > evalNode(node.right); + case 'LessEqualExpression': + return evalNode(node.left) <= evalNode(node.right); + case 'GreaterEqualExpression': + return evalNode(node.left) >= evalNode(node.right); + case 'NotEqualExpression': + return evalNode(node.left) !== evalNode(node.right); + case 'AndExpression': + return !!(evalNode(node.left) && evalNode(node.right)); + case 'OrExpression': + return !!(evalNode(node.left) || evalNode(node.right)); + case 'XorExpression': + const leftVal = evalNode(node.left); + const rightVal = evalNode(node.right); + return !!((leftVal && !rightVal) || (!leftVal && rightVal)); + case 'NotExpression': + return !evalNode(node.operand); + case 'UnaryMinusExpression': + return -evalNode(node.operand); + case 'TableLiteral': + const table = {}; + let arrayIndex = 1; + + for (const entry of node.entries) { + if (entry.key === null) { + // Array-like entry: {1, 2, 3} + table[arrayIndex] = evalNode(entry.value); + arrayIndex++; + } else { + // Key-value entry: {name: "Alice", age: 30} + let key; + if (entry.key.type === 'Identifier') { + // Convert identifier keys to strings + key = entry.key.value; + } else { + // For other key types (numbers, strings), evaluate normally + key = evalNode(entry.key); + } + const value = evalNode(entry.value); + table[key] = value; + } + } + + return table; + case 'TableAccess': + const tableValue = evalNode(node.table); + let keyValue; + + // Handle different key types + if (node.key.type === 'Identifier') { + // For dot notation, use the identifier name as the key + keyValue = node.key.value; + } else { + // For bracket notation, evaluate the key expression + keyValue = evalNode(node.key); + } + + if (typeof tableValue !== 'object' || tableValue === null) { + throw new Error('Cannot access property of non-table value'); + } + + if (tableValue[keyValue] === undefined) { + throw new Error(`Key '${keyValue}' not found in table`); + } + + return tableValue[keyValue]; + case 'AssignmentExpression': + // Prevent reassignment of standard library functions + if (globalScope.hasOwnProperty(node.name)) { + throw new Error(`Cannot reassign immutable variable: ${node.name}`); + } + + // Check if this is a function assignment for potential recursion + if (node.value.type === 'FunctionDefinition' || node.value.type === 'FunctionDeclaration') { + // Create a placeholder function that will be replaced + let placeholder = function(...args) { + // This should never be called, but if it is, it means we have a bug + throw new Error(`Function ${node.name} is not yet fully defined`); + }; + + // Store the placeholder in global scope + globalScope[node.name] = placeholder; + + // Now evaluate the function definition with access to the placeholder + const actualFunction = evalNode(node.value); + + // Replace the placeholder with the actual function + globalScope[node.name] = actualFunction; + return; + } + + const value = evalNode(node.value); + globalScope[node.name] = value; + return; + case 'Assignment': + // Prevent reassignment of standard library functions + if (globalScope.hasOwnProperty(node.identifier)) { + throw new Error(`Cannot reassign immutable variable: ${node.identifier}`); + } + + // Check if this is a function assignment for potential recursion + if (node.value.type === 'FunctionDefinition' || node.value.type === 'FunctionDeclaration') { + // Create a placeholder function that will be replaced + let placeholder = function(...args) { + // This should never be called, but if it is, it means we have a bug + throw new Error(`Function ${node.identifier} is not yet fully defined`); + }; + + // Store the placeholder in global scope + globalScope[node.identifier] = placeholder; + + // Now evaluate the function definition with access to the placeholder + const actualFunction = evalNode(node.value); + + // Replace the placeholder with the actual function + globalScope[node.identifier] = actualFunction; + return; + } + + const assignmentValue = evalNode(node.value); + globalScope[node.identifier] = assignmentValue; + return; + case 'Identifier': + const identifierValue = globalScope[node.value]; + if (identifierValue === undefined) { + throw new Error(`Variable ${node.value} is not defined`); + } + return identifierValue; + case 'FunctionDeclaration': + // For anonymous functions, the name comes from the assignment + // The function itself doesn't have a name, so we just return + // The assignment will handle storing it in the global scope + return function(...args) { + callStackTracker.push('FunctionCall', node.params.join(',')); + try { + let localScope = Object.create(globalScope); + for (let i = 0; i < node.params.length; i++) { + localScope[node.params[i]] = args[i]; + } + return localEvalNodeWithScope(node.body, localScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionDefinition': + // Create a function from the function definition + return function(...args) { + callStackTracker.push('FunctionCall', node.parameters.join(',')); + try { + let localScope = Object.create(globalScope); + for (let i = 0; i < node.parameters.length; i++) { + localScope[node.parameters[i]] = args[i]; + } + return localEvalNodeWithScope(node.body, localScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionCall': + let funcToCall; + if (typeof node.name === 'string') { + // Regular function call with string name + funcToCall = globalScope[node.name]; + if (process.env.DEBUG) { + console.log(`[DEBUG] FunctionCall: looking up function '${node.name}' in globalScope, found:`, typeof funcToCall); + } + } else if (node.name.type === 'Identifier') { + // Function call with identifier + funcToCall = globalScope[node.name.value]; + if (process.env.DEBUG) { + console.log(`[DEBUG] FunctionCall: looking up function '${node.name.value}' in globalScope, found:`, typeof funcToCall); + } + } else { + // Function call from expression (e.g., parenthesized function, higher-order) + funcToCall = evalNode(node.name); + if (process.env.DEBUG) { + console.log(`[DEBUG] FunctionCall: evaluated function expression, found:`, typeof funcToCall); + } + } + + if (funcToCall instanceof Function) { + let args = node.args.map(evalNode); + if (process.env.DEBUG) { + console.log(`[DEBUG] FunctionCall: calling function with args:`, args); + } + return funcToCall(...args); + } + throw new Error(`Function is not defined or is not callable`); + case 'WhenExpression': + // Handle both single values and arrays of values + const whenValues = Array.isArray(node.value) + ? node.value.map(evalNode) + : [evalNode(node.value)]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: whenValues =`, whenValues); + } + + for (const caseItem of node.cases) { + // Handle both single patterns and arrays of patterns + const patterns = caseItem.pattern.map(evalNode); + + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: patterns =`, patterns); + } + + // Check if patterns match the values + let matches = true; + if (whenValues.length !== patterns.length) { + matches = false; + } else { + for (let i = 0; i < whenValues.length; i++) { + const value = whenValues[i]; + const pattern = patterns[i]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: comparing value ${value} with pattern ${pattern}`); + } + + if (pattern === true) { // Wildcard pattern + // Wildcard always matches + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: wildcard matches`); + } + continue; + } else if (value !== pattern) { + matches = false; + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: pattern does not match`); + } + break; + } else { + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: pattern matches`); + } + } + } + } + + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: case matches = ${matches}`); + } + + if (matches) { + const results = caseItem.result.map(evalNode); + if (results.length === 1) { + return results[0]; + } + return results.join(' '); + } + } + throw new Error('No matching pattern found'); + case 'WildcardPattern': + return true; + case 'IOInExpression': + const readline = require('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); + + return new Promise((resolve) => { + rl.question('', (input) => { + rl.close(); + const num = parseInt(input); + resolve(isNaN(num) ? input : num); + }); + }); + case 'IOOutExpression': + const outputValue = evalNode(node.value); + console.log(outputValue); + return outputValue; + case 'IOAssertExpression': + const assertionValue = evalNode(node.value); + if (!assertionValue) { + throw new Error('Assertion failed'); + } + return assertionValue; + case 'FunctionReference': + const functionValue = globalScope[node.name]; + if (functionValue === undefined) { + throw new Error(`Function ${node.name} is not defined`); + } + if (typeof functionValue !== 'function') { + throw new Error(`${node.name} is not a function`); + } + return functionValue; + case 'ArrowExpression': + // Arrow expressions are function bodies that should be evaluated + return evalNode(node.body); + default: + throw new Error(`Unknown node type: ${node.type}`); + } + } finally { + callStackTracker.pop(); + } + } + + /** + * Evaluates AST nodes in a local scope with access to parent scope. + * + * @param {Object} node - AST node to evaluate + * @param {Object} scope - Local scope object (prototypally inherits from global) + * @returns {*} The result of evaluating the node + * @throws {Error} For evaluation errors + * + * @description Used for evaluating function bodies and other expressions + * that need access to both local and global variables. This function implements + * lexical scoping by creating a local scope that prototypally inherits from + * the global scope, allowing access to both local parameters and global functions. + * + * The function handles the same node types as evalNode but uses the local scope + * for variable lookups. It also implements the forward declaration pattern for + * recursive functions, ensuring that function definitions can reference themselves + * during evaluation. + * + * This separation of global and local evaluation allows for proper scope management + * and prevents variable name conflicts between function parameters and global variables. + */ + const localEvalNodeWithScope = (node, scope) => { + callStackTracker.push('localEvalNodeWithScope', node?.type || 'unknown'); + + try { + if (!node) { + return undefined; + } + switch (node.type) { + case 'NumberLiteral': + return parseFloat(node.value); + case 'StringLiteral': + return node.value; + case 'BooleanLiteral': + return node.value; + case 'PlusExpression': + return localEvalNodeWithScope(node.left, scope) + localEvalNodeWithScope(node.right, scope); + case 'MinusExpression': + return localEvalNodeWithScope(node.left, scope) - localEvalNodeWithScope(node.right, scope); + case 'MultiplyExpression': + return localEvalNodeWithScope(node.left, scope) * localEvalNodeWithScope(node.right, scope); + case 'DivideExpression': + const divisor = localEvalNodeWithScope(node.right, scope); + if (divisor === 0) { + throw new Error('Division by zero'); + } + return localEvalNodeWithScope(node.left, scope) / localEvalNodeWithScope(node.right, scope); + case 'ModuloExpression': + return localEvalNodeWithScope(node.left, scope) % localEvalNodeWithScope(node.right, scope); + case 'PowerExpression': + return Math.pow(localEvalNodeWithScope(node.left, scope), localEvalNodeWithScope(node.right, scope)); + case 'EqualsExpression': + return localEvalNodeWithScope(node.left, scope) === localEvalNodeWithScope(node.right, scope); + case 'LessThanExpression': + return localEvalNodeWithScope(node.left, scope) < localEvalNodeWithScope(node.right, scope); + case 'GreaterThanExpression': + return localEvalNodeWithScope(node.left, scope) > localEvalNodeWithScope(node.right, scope); + case 'LessEqualExpression': + return localEvalNodeWithScope(node.left, scope) <= localEvalNodeWithScope(node.right, scope); + case 'GreaterEqualExpression': + return localEvalNodeWithScope(node.left, scope) >= localEvalNodeWithScope(node.right, scope); + case 'NotEqualExpression': + return localEvalNodeWithScope(node.left, scope) !== localEvalNodeWithScope(node.right, scope); + case 'AndExpression': + return !!(localEvalNodeWithScope(node.left, scope) && localEvalNodeWithScope(node.right, scope)); + case 'OrExpression': + return !!(localEvalNodeWithScope(node.left, scope) || localEvalNodeWithScope(node.right, scope)); + case 'XorExpression': + const leftVal = localEvalNodeWithScope(node.left, scope); + const rightVal = localEvalNodeWithScope(node.right, scope); + return !!((leftVal && !rightVal) || (!leftVal && rightVal)); + case 'NotExpression': + return !localEvalNodeWithScope(node.operand, scope); + case 'UnaryMinusExpression': + return -localEvalNodeWithScope(node.operand, scope); + case 'TableLiteral': + const table = {}; + let arrayIndex = 1; + + for (const entry of node.entries) { + if (entry.key === null) { + // Array-like entry: {1, 2, 3} + table[arrayIndex] = localEvalNodeWithScope(entry.value, scope); + arrayIndex++; + } else { + // Key-value entry: {name: "Alice", age: 30} + let key; + if (entry.key.type === 'Identifier') { + // Convert identifier keys to strings + key = entry.key.value; + } else { + // For other key types (numbers, strings), evaluate normally + key = localEvalNodeWithScope(entry.key, scope); + } + const value = localEvalNodeWithScope(entry.value, scope); + table[key] = value; + } + } + + return table; + case 'TableAccess': + const tableValue = localEvalNodeWithScope(node.table, scope); + let keyValue; + + // Handle different key types + if (node.key.type === 'Identifier') { + // For dot notation, use the identifier name as the key + keyValue = node.key.value; + } else { + // For bracket notation, evaluate the key expression + keyValue = localEvalNodeWithScope(node.key, scope); + } + + if (typeof tableValue !== 'object' || tableValue === null) { + throw new Error('Cannot access property of non-table value'); + } + + if (tableValue[keyValue] === undefined) { + throw new Error(`Key '${keyValue}' not found in table`); + } + + return tableValue[keyValue]; + case 'AssignmentExpression': + // Prevent reassignment of standard library functions + if (globalScope.hasOwnProperty(node.name)) { + throw new Error(`Cannot reassign immutable variable: ${node.name}`); + } + + // Check if this is a function assignment for potential recursion + if (node.value.type === 'FunctionDefinition' || node.value.type === 'FunctionDeclaration') { + // Create a placeholder function that will be replaced + let placeholder = function(...args) { + // This should never be called, but if it is, it means we have a bug + throw new Error(`Function ${node.name} is not yet fully defined`); + }; + + // Store the placeholder in global scope + globalScope[node.name] = placeholder; + + // Now evaluate the function definition with access to the placeholder + const actualFunction = localEvalNodeWithScope(node.value, scope); + + // Replace the placeholder with the actual function + globalScope[node.name] = actualFunction; + return; + } + + globalScope[node.name] = localEvalNodeWithScope(node.value, scope); + return; + case 'Identifier': + // First check local scope, then global scope + if (scope && scope.hasOwnProperty(node.value)) { + return scope[node.value]; + } + const identifierValue = globalScope[node.value]; + if (identifierValue === undefined && node.value) { + return node.value; + } + return identifierValue; + case 'FunctionDeclaration': + // For anonymous functions, the name comes from the assignment + // The function itself doesn't have a name, so we just return + // The assignment will handle storing it in the global scope + return function(...args) { + callStackTracker.push('FunctionCall', node.params.join(',')); + try { + let nestedScope = Object.create(globalScope); + for (let i = 0; i < node.params.length; i++) { + nestedScope[node.params[i]] = args[i]; + } + return localEvalNodeWithScope(node.body, nestedScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionDefinition': + // Create a function from the function definition + return function(...args) { + callStackTracker.push('FunctionCall', node.parameters.join(',')); + try { + let nestedScope = Object.create(globalScope); + for (let i = 0; i < node.parameters.length; i++) { + nestedScope[node.parameters[i]] = args[i]; + } + return localEvalNodeWithScope(node.body, nestedScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionCall': + let localFunc; + if (typeof node.name === 'string') { + // Regular function call with string name + localFunc = globalScope[node.name]; + } else if (node.name.type === 'Identifier') { + // Function call with identifier + localFunc = globalScope[node.name.value]; + } else { + // Function call from expression (e.g., parenthesized function, higher-order) + localFunc = localEvalNodeWithScope(node.name, scope); + } + + if (localFunc instanceof Function) { + let args = node.args.map(arg => localEvalNodeWithScope(arg, scope)); + return localFunc(...args); + } + throw new Error(`Function is not defined or is not callable`); + case 'WhenExpression': + // Handle both single values and arrays of values + const whenValues = Array.isArray(node.value) + ? node.value.map(val => localEvalNodeWithScope(val, scope)) + : [localEvalNodeWithScope(node.value, scope)]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: whenValues =`, whenValues); + } + + for (const caseItem of node.cases) { + // Handle both single patterns and arrays of patterns + const patterns = caseItem.pattern.map(pat => localEvalNodeWithScope(pat, scope)); + + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: patterns =`, patterns); + } + + // Check if patterns match the values + let matches = true; + if (whenValues.length !== patterns.length) { + matches = false; + } else { + for (let i = 0; i < whenValues.length; i++) { + const value = whenValues[i]; + const pattern = patterns[i]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: comparing value ${value} with pattern ${pattern}`); + } + + if (pattern === true) { // Wildcard pattern + // Wildcard always matches + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: wildcard matches`); + } + continue; + } else if (value !== pattern) { + matches = false; + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: pattern does not match`); + } + break; + } else { + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: pattern matches`); + } + } + } + } + + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: case matches = ${matches}`); + } + + if (matches) { + const results = caseItem.result.map(res => localEvalNodeWithScope(res, scope)); + if (results.length === 1) { + return results[0]; + } + return results.join(' '); + } + } + throw new Error('No matching pattern found'); + case 'WildcardPattern': + return true; + case 'IOInExpression': + const readline = require('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); + + return new Promise((resolve) => { + rl.question('', (input) => { + rl.close(); + const num = parseInt(input); + resolve(isNaN(num) ? input : num); + }); + }); + case 'IOOutExpression': + const localOutputValue = localEvalNodeWithScope(node.value, scope); + console.log(localOutputValue); + return localOutputValue; + case 'IOAssertExpression': + const localAssertionValue = localEvalNodeWithScope(node.value, scope); + if (!localAssertionValue) { + throw new Error('Assertion failed'); + } + return localAssertionValue; + case 'FunctionReference': + const localFunctionValue = globalScope[node.name]; + if (localFunctionValue === undefined) { + throw new Error(`Function ${node.name} is not defined`); + } + if (typeof localFunctionValue !== 'function') { + throw new Error(`${node.name} is not a function`); + } + return localFunctionValue; + case 'ArrowExpression': + // Arrow expressions are function bodies that should be evaluated + return localEvalNodeWithScope(node.body, scope); + default: + throw new Error(`Unknown node type: ${node.type}`); + } + } finally { + callStackTracker.pop(); + } + }; + + /** + * Evaluates AST nodes in the global scope (internal recursion helper). + * + * @param {Object} node - AST node to evaluate + * @returns {*} The result of evaluating the node + * @throws {Error} For evaluation errors + * + * @description Internal helper function for recursive evaluation that + * always uses the global scope. This function is used to avoid circular + * dependencies and infinite recursion when evaluating nested expressions + * that need access to the global scope. + * + * This function duplicates the logic of evalNode but without the scope + * parameter, ensuring that all variable lookups go through the global scope. + * It's primarily used for evaluating function bodies and other expressions + * that need to be isolated from local scope contexts. + * + * The function also implements the forward declaration pattern for recursive + * functions, maintaining consistency with the other evaluation functions. + */ + const localEvalNode = (node) => { + callStackTracker.push('localEvalNode', node?.type || 'unknown'); + + try { + if (!node) { + return undefined; + } + switch (node.type) { + case 'NumberLiteral': + return parseFloat(node.value); + case 'StringLiteral': + return node.value; + case 'BooleanLiteral': + return node.value; + case 'PlusExpression': + return localEvalNode(node.left) + localEvalNode(node.right); + case 'MinusExpression': + return localEvalNode(node.left) - localEvalNode(node.right); + case 'MultiplyExpression': + return localEvalNode(node.left) * localEvalNode(node.right); + case 'DivideExpression': + const divisor = localEvalNode(node.right); + if (divisor === 0) { + throw new Error('Division by zero'); + } + return localEvalNode(node.left) / localEvalNode(node.right); + case 'ModuloExpression': + return localEvalNode(node.left) % localEvalNode(node.right); + case 'PowerExpression': + return Math.pow(localEvalNode(node.left), localEvalNode(node.right)); + case 'EqualsExpression': + return localEvalNode(node.left) === localEvalNode(node.right); + case 'LessThanExpression': + return localEvalNode(node.left) < localEvalNode(node.right); + case 'GreaterThanExpression': + return localEvalNode(node.left) > localEvalNode(node.right); + case 'LessEqualExpression': + return localEvalNode(node.left) <= localEvalNode(node.right); + case 'GreaterEqualExpression': + return localEvalNode(node.left) >= localEvalNode(node.right); + case 'NotEqualExpression': + return localEvalNode(node.left) !== localEvalNode(node.right); + case 'AndExpression': + return !!(localEvalNode(node.left) && localEvalNode(node.right)); + case 'OrExpression': + return !!(localEvalNode(node.left) || localEvalNode(node.right)); + case 'XorExpression': + const leftVal = localEvalNode(node.left); + const rightVal = localEvalNode(node.right); + return !!((leftVal && !rightVal) || (!leftVal && rightVal)); + case 'NotExpression': + return !localEvalNode(node.operand); + case 'UnaryMinusExpression': + return -localEvalNode(node.operand); + case 'TableLiteral': + const table = {}; + let arrayIndex = 1; + + for (const entry of node.entries) { + if (entry.key === null) { + // Array-like entry: {1, 2, 3} + table[arrayIndex] = localEvalNode(entry.value); + arrayIndex++; + } else { + // Key-value entry: {name: "Alice", age: 30} + let key; + if (entry.key.type === 'Identifier') { + // Convert identifier keys to strings + key = entry.key.value; + } else { + // For other key types (numbers, strings), evaluate normally + key = localEvalNode(entry.key); + } + const value = localEvalNode(entry.value); + table[key] = value; + } + } + + return table; + case 'TableAccess': + const tableValue = localEvalNode(node.table); + let keyValue; + + // Handle different key types + if (node.key.type === 'Identifier') { + // For dot notation, use the identifier name as the key + keyValue = node.key.value; + } else { + // For bracket notation, evaluate the key expression + keyValue = localEvalNode(node.key); + } + + if (typeof tableValue !== 'object' || tableValue === null) { + throw new Error('Cannot access property of non-table value'); + } + + if (tableValue[keyValue] === undefined) { + throw new Error(`Key '${keyValue}' not found in table`); + } + + return tableValue[keyValue]; + case 'AssignmentExpression': + // Prevent reassignment of standard library functions + if (globalScope.hasOwnProperty(node.name)) { + throw new Error(`Cannot reassign immutable variable: ${node.name}`); + } + + // Check if this is a function assignment for potential recursion + if (node.value.type === 'FunctionDefinition' || node.value.type === 'FunctionDeclaration') { + // Create a placeholder function that will be replaced + let placeholder = function(...args) { + // This should never be called, but if it is, it means we have a bug + throw new Error(`Function ${node.name} is not yet fully defined`); + }; + + // Store the placeholder in global scope + globalScope[node.name] = placeholder; + + // Now evaluate the function definition with access to the placeholder + const actualFunction = localEvalNode(node.value); + + // Replace the placeholder with the actual function + globalScope[node.name] = actualFunction; + return; + } + + globalScope[node.name] = localEvalNode(node.value); + return; + case 'Identifier': + const identifierValue = globalScope[node.value]; + if (identifierValue === undefined && node.value) { + return node.value; + } + return identifierValue; + case 'FunctionDeclaration': + // For anonymous functions, the name comes from the assignment + // The function itself doesn't have a name, so we just return + // The assignment will handle storing it in the global scope + return function(...args) { + callStackTracker.push('FunctionCall', node.params.join(',')); + try { + let nestedScope = Object.create(globalScope); + for (let i = 0; i < node.params.length; i++) { + nestedScope[node.params[i]] = args[i]; + } + return localEvalNodeWithScope(node.body, nestedScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionDefinition': + // Create a function from the function definition + return function(...args) { + callStackTracker.push('FunctionCall', node.parameters.join(',')); + try { + let nestedScope = Object.create(globalScope); + for (let i = 0; i < node.parameters.length; i++) { + nestedScope[node.parameters[i]] = args[i]; + } + return localEvalNodeWithScope(node.body, nestedScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionCall': + let localFunc; + if (typeof node.name === 'string') { + // Regular function call with string name + localFunc = globalScope[node.name]; + } else if (node.name.type === 'Identifier') { + // Function call with identifier + localFunc = globalScope[node.name.value]; + } else { + // Function call from expression (e.g., parenthesized function, higher-order) + localFunc = localEvalNode(node.name); + } + + if (localFunc instanceof Function) { + let args = node.args.map(localEvalNode); + return localFunc(...args); + } + throw new Error(`Function is not defined or is not callable`); + case 'WhenExpression': + // Handle both single values and arrays of values + const whenValues = Array.isArray(node.value) + ? node.value.map(localEvalNode) + : [localEvalNode(node.value)]; + + for (const caseItem of node.cases) { + // Handle both single patterns and arrays of patterns + const patterns = caseItem.pattern.map(localEvalNode); + + // Check if patterns match the values + let matches = true; + if (whenValues.length !== patterns.length) { + matches = false; + } else { + for (let i = 0; i < whenValues.length; i++) { + const value = whenValues[i]; + const pattern = patterns[i]; + + if (pattern === true) { // Wildcard pattern + // Wildcard always matches + continue; + } else if (value !== pattern) { + matches = false; + break; + } + } + } + + if (matches) { + const results = caseItem.result.map(localEvalNode); + if (results.length === 1) { + return results[0]; + } + return results.join(' '); + } + } + throw new Error('No matching pattern found'); + case 'WildcardPattern': + return true; + case 'IOInExpression': + const readline = require('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); + + return new Promise((resolve) => { + rl.question('', (input) => { + rl.close(); + const num = parseInt(input); + resolve(isNaN(num) ? input : num); + }); + }); + case 'IOOutExpression': + const localOutputValue = localEvalNode(node.value); + console.log(localOutputValue); + return localOutputValue; + case 'IOAssertExpression': + const localAssertionValue = localEvalNode(node.value); + if (!localAssertionValue) { + throw new Error('Assertion failed'); + } + return localAssertionValue; + case 'FunctionReference': + const localFunctionValue = globalScope[node.name]; + if (localFunctionValue === undefined) { + throw new Error(`Function ${node.name} is not defined`); + } + if (typeof localFunctionValue !== 'function') { + throw new Error(`${node.name} is not a function`); + } + return localFunctionValue; + case 'ArrowExpression': + // Arrow expressions are function bodies that should be evaluated + return localEvalNode(node.body); + default: + throw new Error(`Unknown node type: ${node.type}`); + } + } finally { + callStackTracker.pop(); + } + }; + + let lastResult; + for (let node of ast.body) { + if (node) { + lastResult = evalNode(node); + } + } + + if (lastResult instanceof Promise) { + return lastResult.then(result => { + return result; + }); + } + + return lastResult; +} + +/** + * Debug logging utility function. + * + * @param {string} message - Debug message to log + * @param {*} [data=null] - Optional data to log with the message + * + * @description Logs debug messages to console when DEBUG environment variable is set. + * Provides verbose output during development while remaining silent in production. + * + * Debug functions are gated by the DEBUG environment variable, allowing for + * verbose output during development and silent operation in production. This + * approach makes it easy to trace execution and diagnose issues without + * cluttering normal output. + */ +function debugLog(message, data = null) { + if (process.env.DEBUG) { + console.log(`[DEBUG] ${message}`); + if (data) { + console.log(data); + } + } +} + +/** + * Debug error logging utility function. + * + * @param {string} message - Debug error message to log + * @param {Error} [error=null] - Optional error object to log + * + * @description Logs debug error messages to console when DEBUG environment variable is set. + * Provides verbose error output during development while remaining silent in production. + * + * Debug functions are gated by the DEBUG environment variable, allowing for + * verbose output during development and silent operation in production. This + * approach makes it easy to trace execution and diagnose issues without + * cluttering normal output. + */ +function debugError(message, error = null) { + if (process.env.DEBUG) { + console.error(`[DEBUG ERROR] ${message}`); + if (error) { + console.error(error); + } + } +} + +/** + * Call stack tracking for debugging recursion issues. + * + * @description Tracks function calls to help identify infinite recursion + * and deep call stacks that cause stack overflow errors. This is essential + * for debugging the interpreter's recursive evaluation of AST nodes. + * + * The tracker maintains a stack of function calls with timestamps and context + * information, counts function calls to identify hot paths, and detects + * potential infinite recursion by monitoring stack depth. + * + * This tool is particularly important for the combinator-based architecture + * where function calls are the primary execution mechanism, and complex + * nested expressions can lead to deep call stacks. + */ +const callStackTracker = { + stack: [], + maxDepth: 0, + callCounts: new Map(), + + /** + * Push a function call onto the stack + * @param {string} functionName - Name of the function being called + * @param {string} context - Context where the call is happening + */ + push: function(functionName, context = '') { + const callInfo = { functionName, context, timestamp: Date.now() }; + this.stack.push(callInfo); + + // Track maximum depth + if (this.stack.length > this.maxDepth) { + this.maxDepth = this.stack.length; + } + + // Count function calls + const key = `${functionName}${context ? `:${context}` : ''}`; + this.callCounts.set(key, (this.callCounts.get(key) || 0) + 1); + + // Check for potential infinite recursion + if (this.stack.length > 1000) { + console.error('=== POTENTIAL INFINITE RECURSION DETECTED ==='); + console.error('Call stack depth:', this.stack.length); + console.error('Function call counts:', Object.fromEntries(this.callCounts)); + console.error('Recent call stack:'); + this.stack.slice(-10).forEach((call, i) => { + console.error(` ${this.stack.length - 10 + i}: ${call.functionName}${call.context ? ` (${call.context})` : ''}`); + }); + throw new Error(`Potential infinite recursion detected. Call stack depth: ${this.stack.length}`); + } + + if (process.env.DEBUG && this.stack.length % 100 === 0) { + console.log(`[DEBUG] Call stack depth: ${this.stack.length}, Max: ${this.maxDepth}`); + } + }, + + /** + * Pop a function call from the stack + */ + pop: function() { + return this.stack.pop(); + }, + + /** + * Get current stack depth + */ + getDepth: function() { + return this.stack.length; + }, + + /** + * Get call statistics + */ + getStats: function() { + return { + currentDepth: this.stack.length, + maxDepth: this.maxDepth, + callCounts: Object.fromEntries(this.callCounts) + }; + }, + + /** + * Reset the tracker + */ + reset: function() { + this.stack = []; + this.maxDepth = 0; + this.callCounts.clear(); + } +}; + +/** + * Cross-platform file I/O utility + * + * @param {string} filePath - Path to the file to read + * @returns {Promise<string>} File contents as a string + * @throws {Error} For file reading errors + * + * @description Handles file reading across different platforms (Node.js, Bun, browser) + * with appropriate fallbacks for each environment. This function is essential for + * the language's file execution model where scripts are loaded from .txt files. + * + * The function prioritizes ES modules compatibility by using dynamic import, + * but falls back to require for older Node.js versions. Browser environments + * are not supported for file I/O operations. + * + * This cross-platform approach ensures the language can run in various JavaScript + * environments while maintaining consistent behavior. + */ +async function readFile(filePath) { + // Check if we're in a browser environment + if (typeof window !== 'undefined') { + // Browser environment - would need to implement file input or fetch + throw new Error('File I/O not supported in browser environment'); + } + + // Node.js or Bun environment + try { + // Try dynamic import for ES modules compatibility + const fs = await import('fs'); + return fs.readFileSync(filePath, 'utf8'); + } catch (error) { + // Fallback to require for older Node.js versions + const fs = require('fs'); + return fs.readFileSync(filePath, 'utf8'); + } +} + +/** + * Reads a file, tokenizes, parses, and interprets it. + * + * @param {string} filePath - Path to the file to execute + * @returns {Promise<*>} The result of executing the file + * @throws {Error} For file reading, parsing, or execution errors + * + * @description Main entry point for file execution. Handles the complete language + * pipeline: file reading, lexical analysis, parsing, and interpretation. + * + * This function orchestrates the entire language execution process: + * 1. Reads the source file using cross-platform I/O utilities + * 2. Tokenizes the source code using the lexer + * 3. Parses tokens into an AST using the combinator-based parser + * 4. Interprets the AST using the combinator-based interpreter + * + * The function provides comprehensive error handling and debug output at each + * stage for transparency and troubleshooting. It also manages the call stack + * tracker to provide execution statistics and detect potential issues. + * + * Supports both synchronous and asynchronous execution, with proper + * error handling and process exit codes. + */ +async function executeFile(filePath) { + try { + // Validate file extension + if (!filePath.endsWith('.txt')) { + throw new Error('Only .txt files are supported'); + } + + const input = await readFile(filePath); + + debugLog('Input:', input); + + const tokens = lexer(input); + debugLog('Tokens:', tokens); + + const ast = parser(tokens); + debugLog('AST:', JSON.stringify(ast, null, 2)); + + const result = interpreter(ast); + + if (result instanceof Promise) { + result.then(finalResult => { + if (finalResult !== undefined) { + console.log(finalResult); + } + // Print call stack statistics after execution + const stats = callStackTracker.getStats(); + console.log('\n=== CALL STACK STATISTICS ==='); + console.log('Maximum call stack depth:', stats.maxDepth); + console.log('Function call counts:', JSON.stringify(stats.callCounts, null, 2)); + }).catch(error => { + console.error(`Error executing file: ${error.message}`); + // Print call stack statistics on error + const stats = callStackTracker.getStats(); + console.error('\n=== CALL STACK STATISTICS ON ERROR ==='); + console.error('Maximum call stack depth:', stats.maxDepth); + console.error('Function call counts:', JSON.stringify(stats.callCounts, null, 2)); + process.exit(1); + }); + } else { + if (result !== undefined) { + console.log(result); + } + // Print call stack statistics after execution + const stats = callStackTracker.getStats(); + console.log('\n=== CALL STACK STATISTICS ==='); + console.log('Maximum call stack depth:', stats.maxDepth); + console.log('Function call counts:', JSON.stringify(stats.callCounts, null, 2)); + } + } catch (error) { + console.error(`Error executing file: ${error.message}`); + // Print call stack statistics on error + const stats = callStackTracker.getStats(); + console.error('\n=== CALL STACK STATISTICS ON ERROR ==='); + console.error('Maximum call stack depth:', stats.maxDepth); + console.error('Function call counts:', JSON.stringify(stats.callCounts, null, 2)); + process.exit(1); + } +} + +/** + * CLI argument handling and program entry point. + * + * @description Processes command line arguments and executes the specified file. + * Provides helpful error messages for incorrect usage. + * + * The language is designed for file execution only (no REPL), so the CLI + * enforces this usage and provides helpful error messages for incorrect invocation. + * The function validates that exactly one file path is provided and that the + * file has the correct .txt extension. + * + * Exits with appropriate error codes for different failure scenarios. + */ +async function main() { + const args = process.argv.slice(2); + + if (args.length === 0) { + console.error('Usage: node lang.js <file>'); + console.error(' Provide a file path to execute'); + process.exit(1); + } else if (args.length === 1) { + // Execute the file + const filePath = args[0]; + await executeFile(filePath); + } else { + // Too many arguments + console.error('Usage: node lang.js <file>'); + console.error(' Provide exactly one file path to execute'); + process.exit(1); + } +} + +// Start the program +main().catch(error => { + console.error('Fatal error:', error.message); + process.exit(1); +});</code></pre> + </article> + </section> + + + + +</div> + +<nav> + <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#TokenType">TokenType</a></li><li><a href="global.html#callStackTracker">callStackTracker</a></li><li><a href="global.html#debugError">debugError</a></li><li><a href="global.html#debugLog">debugLog</a></li><li><a href="global.html#executeFile">executeFile</a></li><li><a href="global.html#initializeStandardLibrary">initializeStandardLibrary</a></li><li><a href="global.html#interpreter">interpreter</a></li><li><a href="global.html#lexer">lexer</a></li><li><a href="global.html#main">main</a></li><li><a href="global.html#parser">parser</a></li><li><a href="global.html#readFile">readFile</a></li></ul> +</nav> + +<br class="clear"> + +<footer> + Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.3</a> on Sun Jul 27 2025 10:38:30 GMT-0400 (Eastern Daylight Time) +</footer> + +<script> prettyPrint(); </script> +<script src="scripts/linenumber.js"> </script> +</body> +</html> diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/lexer.js.html b/js/scripting-lang/docs/scripting-lang/0.0.1/lexer.js.html new file mode 100644 index 0000000..721c9a8 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/lexer.js.html @@ -0,0 +1,447 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>JSDoc: Source: lexer.js</title> + + <script src="scripts/prettify/prettify.js"> </script> + <script src="scripts/prettify/lang-css.js"> </script> + <!--[if lt IE 9]> + <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> + <![endif]--> + <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> + <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> +</head> + +<body> + +<div id="main"> + + <h1 class="page-title">Source: lexer.js</h1> + + + + + + + <section> + <article> + <pre class="prettyprint source linenums"><code>// Lexer for the scripting language +// Supports both Node.js and browser environments + +/** + * Token types for the language + * + * @description Defines all token types used by the lexer and parser. + * Each token type represents a distinct syntactic element in the language. + * + * The token types are organized into categories: + * - Literals: NUMBER, STRING, TRUE, FALSE + * - Operators: PLUS, MINUS, MULTIPLY, DIVIDE, MODULO, POWER, etc. + * - Keywords: WHEN, IS, THEN, FUNCTION, etc. + * - Punctuation: LEFT_PAREN, RIGHT_PAREN, SEMICOLON, COMMA, etc. + * - Special: IO_IN, IO_OUT, IO_ASSERT, FUNCTION_REF + * + * This enumeration provides a centralized definition of all possible + * token types, ensuring consistency between lexer and parser. + */ +export const TokenType = { + NUMBER: 'NUMBER', + PLUS: 'PLUS', + MINUS: 'MINUS', + MULTIPLY: 'MULTIPLY', + DIVIDE: 'DIVIDE', + IDENTIFIER: 'IDENTIFIER', + ASSIGNMENT: 'ASSIGNMENT', + ARROW: 'ARROW', + CASE: 'CASE', + OF: 'OF', + WHEN: 'WHEN', + IS: 'IS', + THEN: 'THEN', + WILDCARD: 'WILDCARD', + FUNCTION: 'FUNCTION', + LEFT_PAREN: 'LEFT_PAREN', + RIGHT_PAREN: 'RIGHT_PAREN', + LEFT_BRACE: 'LEFT_BRACE', + RIGHT_BRACE: 'RIGHT_BRACE', + LEFT_BRACKET: 'LEFT_BRACKET', + RIGHT_BRACKET: 'RIGHT_BRACKET', + SEMICOLON: 'SEMICOLON', + COMMA: 'COMMA', + DOT: 'DOT', + STRING: 'STRING', + TRUE: 'TRUE', + FALSE: 'FALSE', + AND: 'AND', + OR: 'OR', + XOR: 'XOR', + NOT: 'NOT', + EQUALS: 'EQUALS', + LESS_THAN: 'LESS_THAN', + GREATER_THAN: 'GREATER_THAN', + LESS_EQUAL: 'LESS_EQUAL', + GREATER_EQUAL: 'GREATER_EQUAL', + NOT_EQUAL: 'NOT_EQUAL', + MODULO: 'MODULO', + POWER: 'POWER', + IO_IN: 'IO_IN', + IO_OUT: 'IO_OUT', + IO_ASSERT: 'IO_ASSERT', + FUNCTION_REF: 'FUNCTION_REF' +}; + +/** + * Converts source code into tokens + * + * @param {string} input - The source code to tokenize + * @returns {Array.<Object>} Array of token objects with type, value, line, and column + * @throws {Error} For unexpected characters or malformed tokens + * + * @description The lexer performs lexical analysis by converting source code + * into a stream of tokens. Each token represents a meaningful unit of the + * language syntax, such as identifiers, literals, operators, and keywords. + * + * The lexer implements a character-by-character scanning approach with + * lookahead for multi-character tokens. It maintains line and column + * information for accurate error reporting and debugging. + * + * Key features: + * - Handles whitespace and comments (single-line and multi-line) + * - Recognizes all language constructs including operators, keywords, and literals + * - Supports string literals with escape sequences + * - Provides detailed position information for error reporting + * - Cross-platform compatibility (Node.js, Bun, browser) + * + * The lexer is designed to be robust and provide clear error messages + * for malformed input, making it easier to debug syntax errors in user code. + */ +export function lexer(input) { + const tokens = []; + let current = 0; + let line = 1; + let column = 1; + + while (current < input.length) { + let char = input[current]; + + // Skip whitespace + if (/\s/.test(char)) { + if (char === '\n') { + line++; + column = 1; + } else { + column++; + } + current++; + continue; + } + + // Skip comments (single line and multi-line) + if (char === '/' && input[current + 1] === '/') { + while (current < input.length && input[current] !== '\n') { + current++; + column++; + } + continue; + } + + // Skip multi-line comments /* ... */ + if (char === '/' && input[current + 1] === '*') { + current += 2; // Skip /* + column += 2; + while (current < input.length - 1 && !(input[current] === '*' && input[current + 1] === '/')) { + if (input[current] === '\n') { + line++; + column = 1; + } else { + column++; + } + current++; + } + if (current < input.length - 1) { + current += 2; // Skip */ + column += 2; + } + continue; + } + + // IO operations (..in, ..out, ..assert) + if (char === '.' && input[current + 1] === '.') { + current += 2; // Skip both dots + column += 2; + + // Read the IO operation name + let operation = ''; + while (current < input.length && /[a-zA-Z]/.test(input[current])) { + operation += input[current]; + current++; + column++; + } + + // Determine the IO operation type + switch (operation) { + case 'in': + tokens.push({ type: TokenType.IO_IN, line, column: column - operation.length - 2 }); + break; + case 'out': + tokens.push({ type: TokenType.IO_OUT, line, column: column - operation.length - 2 }); + break; + case 'assert': + tokens.push({ type: TokenType.IO_ASSERT, line, column: column - operation.length - 2 }); + break; + default: + throw new Error(`Unknown IO operation: ..${operation} at line ${line}, column ${column - operation.length - 2}`); + } + continue; + } + + // Function references (@function) + if (char === '@') { + current++; // Skip '@' + column++; + + // Read the function name + let functionName = ''; + while (current < input.length && /[a-zA-Z0-9_]/.test(input[current])) { + functionName += input[current]; + current++; + column++; + } + + if (functionName === '') { + throw new Error(`Invalid function reference at line ${line}, column ${column - 1}`); + } + + tokens.push({ type: TokenType.FUNCTION_REF, name: functionName, line, column: column - functionName.length - 1 }); + continue; + } + + // Numbers + if (/[0-9]/.test(char)) { + let value = ''; + while (current < input.length && /[0-9.]/.test(input[current])) { + value += input[current]; + current++; + column++; + } + tokens.push({ type: TokenType.NUMBER, value: parseFloat(value), line, column: column - value.length }); + continue; + } + + // Identifiers and keywords + if (/[a-zA-Z_]/.test(char)) { + let value = ''; + const startColumn = column; + while (current < input.length && /[a-zA-Z0-9_]/.test(input[current])) { + value += input[current]; + current++; + column++; + } + + // Check for keywords + switch (value) { + case 'true': + tokens.push({ type: TokenType.TRUE, value: true, line, column: startColumn }); + break; + case 'false': + tokens.push({ type: TokenType.FALSE, value: false, line, column: startColumn }); + break; + case 'and': + tokens.push({ type: TokenType.AND, line, column: startColumn }); + break; + case 'or': + tokens.push({ type: TokenType.OR, line, column: startColumn }); + break; + case 'xor': + tokens.push({ type: TokenType.XOR, line, column: startColumn }); + break; + case 'not': + tokens.push({ type: TokenType.NOT, line, column: startColumn }); + break; + case 'case': + tokens.push({ type: TokenType.CASE, line, column: startColumn }); + break; + case 'of': + tokens.push({ type: TokenType.OF, line, column: startColumn }); + break; + case 'when': + tokens.push({ type: TokenType.WHEN, line, column: startColumn }); + break; + case 'is': + tokens.push({ type: TokenType.IS, line, column: startColumn }); + break; + case 'then': + tokens.push({ type: TokenType.THEN, line, column: startColumn }); + break; + case 'function': + tokens.push({ type: TokenType.FUNCTION, line, column: startColumn }); + break; + case '_': + tokens.push({ type: TokenType.WILDCARD, line, column: startColumn }); + break; + default: + tokens.push({ type: TokenType.IDENTIFIER, value, line, column: startColumn }); + } + continue; + } + + // Strings + if (char === '"') { + let value = ''; + current++; + column++; + while (current < input.length && input[current] !== '"') { + if (input[current] === '\\') { + current++; + column++; + if (current < input.length) { + switch (input[current]) { + case 'n': value += '\n'; break; + case 't': value += '\t'; break; + case 'r': value += '\r'; break; + case '\\': value += '\\'; break; + case '"': value += '"'; break; + default: value += input[current]; + } + } + } else { + value += input[current]; + } + current++; + column++; + } + if (current < input.length) { + current++; + column++; + } + tokens.push({ type: TokenType.STRING, value, line, column: column - value.length - 2 }); + continue; + } + + // Operators and punctuation + switch (char) { + case '+': + tokens.push({ type: TokenType.PLUS, line, column }); + break; + case '-': + if (input[current + 1] === '>') { + tokens.push({ type: TokenType.ARROW, line, column }); + current++; + column++; + } else { + tokens.push({ type: TokenType.MINUS, line, column }); + } + break; + case '*': + tokens.push({ type: TokenType.MULTIPLY, line, column }); + break; + case '/': + tokens.push({ type: TokenType.DIVIDE, line, column }); + break; + case '%': + tokens.push({ type: TokenType.MODULO, line, column }); + break; + case '^': + tokens.push({ type: TokenType.POWER, line, column }); + break; + case '(': + tokens.push({ type: TokenType.LEFT_PAREN, line, column }); + break; + case ')': + tokens.push({ type: TokenType.RIGHT_PAREN, line, column }); + break; + case '{': + tokens.push({ type: TokenType.LEFT_BRACE, line, column }); + break; + case '}': + tokens.push({ type: TokenType.RIGHT_BRACE, line, column }); + break; + case '[': + tokens.push({ type: TokenType.LEFT_BRACKET, line, column }); + break; + case ']': + tokens.push({ type: TokenType.RIGHT_BRACKET, line, column }); + break; + case ';': + tokens.push({ type: TokenType.SEMICOLON, line, column }); + break; + case ',': + tokens.push({ type: TokenType.COMMA, line, column }); + break; + case '.': + tokens.push({ type: TokenType.DOT, line, column }); + break; + case ':': + tokens.push({ type: TokenType.ASSIGNMENT, line, column }); + break; + + case '=': + if (input[current + 1] === '=') { + tokens.push({ type: TokenType.EQUALS, line, column }); + current++; + column++; + } else { + // Single = is used for equality comparison in assertions + tokens.push({ type: TokenType.EQUALS, line, column }); + } + break; + case '<': + if (input[current + 1] === '=') { + tokens.push({ type: TokenType.LESS_EQUAL, line, column }); + current++; + column++; + } else { + tokens.push({ type: TokenType.LESS_THAN, line, column }); + } + break; + case '>': + if (input[current + 1] === '=') { + tokens.push({ type: TokenType.GREATER_EQUAL, line, column }); + current++; + column++; + } else { + tokens.push({ type: TokenType.GREATER_THAN, line, column }); + } + break; + case '!': + if (input[current + 1] === '=') { + tokens.push({ type: TokenType.NOT_EQUAL, line, column }); + current++; + column++; + } else { + throw new Error(`Unexpected character: ${char} at line ${line}, column ${column}`); + } + break; + default: + throw new Error(`Unexpected character: ${char} at line ${line}, column ${column}`); + } + + current++; + column++; + } + + return tokens; +} </code></pre> + </article> + </section> + + + + +</div> + +<nav> + <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#TokenType">TokenType</a></li><li><a href="global.html#callStackTracker">callStackTracker</a></li><li><a href="global.html#debugError">debugError</a></li><li><a href="global.html#debugLog">debugLog</a></li><li><a href="global.html#executeFile">executeFile</a></li><li><a href="global.html#initializeStandardLibrary">initializeStandardLibrary</a></li><li><a href="global.html#interpreter">interpreter</a></li><li><a href="global.html#lexer">lexer</a></li><li><a href="global.html#main">main</a></li><li><a href="global.html#parser">parser</a></li><li><a href="global.html#readFile">readFile</a></li></ul> +</nav> + +<br class="clear"> + +<footer> + Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.3</a> on Sun Jul 27 2025 10:38:30 GMT-0400 (Eastern Daylight Time) +</footer> + +<script> prettyPrint(); </script> +<script src="scripts/linenumber.js"> </script> +</body> +</html> diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/parser.js.html b/js/scripting-lang/docs/scripting-lang/0.0.1/parser.js.html new file mode 100644 index 0000000..37c1dcf --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/parser.js.html @@ -0,0 +1,943 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>JSDoc: Source: parser.js</title> + + <script src="scripts/prettify/prettify.js"> </script> + <script src="scripts/prettify/lang-css.js"> </script> + <!--[if lt IE 9]> + <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> + <![endif]--> + <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> + <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> +</head> + +<body> + +<div id="main"> + + <h1 class="page-title">Source: parser.js</h1> + + + + + + + <section> + <article> + <pre class="prettyprint source linenums"><code>// Parser for the scripting language +// Exports: parser(tokens) +// Converts tokens to an Abstract Syntax Tree (AST) + +import { TokenType } from './lexer.js'; + +/** + * Parser: Converts tokens to an Abstract Syntax Tree (AST). + * + * @param {Array.<Object>} tokens - Array of tokens from the lexer + * @returns {Object} Abstract Syntax Tree with program body + * @throws {Error} For parsing errors like unexpected tokens or missing delimiters + * + * @description The parser implements a combinator-based architecture where all + * operators are translated to function calls to standard library combinators. + * This eliminates parsing ambiguity while preserving the original syntax. + * + * The parser uses a recursive descent approach with proper operator precedence + * handling. Each operator expression (e.g., x + y) is translated to a FunctionCall + * node (e.g., add(x, y)) that will be executed by the interpreter using the + * corresponding combinator function. + * + * Key architectural decisions: + * - All operators become FunctionCall nodes to eliminate ambiguity + * - Operator precedence is handled through recursive parsing functions + * - Function calls are detected by looking for identifiers followed by expressions + * - When expressions and case patterns are parsed with special handling + * - Table literals and access are parsed as structured data + * + * The parser maintains a current token index and advances through the token + * stream, building the AST bottom-up from primary expressions to complex + * logical expressions. + */ +export function parser(tokens) { + let current = 0; + + /** + * Main parsing function that processes the entire token stream + * + * @returns {Object} Complete AST with program body + * @description Iterates through all tokens, parsing each statement or expression + * and building the program body. Handles empty programs gracefully. + */ + function parse() { + const body = []; + + while (current < tokens.length) { + const node = walk(); + if (node) { + body.push(node); + } + } + + return { type: 'Program', body }; + } + + /** + * Main walk function that dispatches to appropriate parsing functions + * + * @returns {Object|null} Parsed AST node or null for empty statements + * @description Determines the type of construct at the current position + * and delegates to the appropriate parsing function. The order of checks + * determines parsing precedence for top-level constructs. + * + * Parsing order: + * 1. IO operations (highest precedence for top-level constructs) + * 2. Assignments (identifier followed by assignment token) + * 3. When expressions (pattern matching) + * 4. Function definitions (explicit function declarations) + * 5. Logical expressions (default case for all other expressions) + */ + function walk() { + const token = tokens[current]; + + if (!token) return null; + + // Handle IO operations first + if (token.type === TokenType.IO_IN) { + return parseIOIn(); + } + if (token.type === TokenType.IO_OUT) { + return parseIOOut(); + } + if (token.type === TokenType.IO_ASSERT) { + return parseIOAssert(); + } + + // Handle assignments + if (token.type === TokenType.IDENTIFIER && + current + 1 < tokens.length && + tokens[current + 1].type === TokenType.ASSIGNMENT) { + return parseAssignment(); + } + + // Handle when expressions + if (token.type === TokenType.WHEN) { + return parseWhenExpression(); + } + + // Handle function definitions + if (token.type === TokenType.FUNCTION) { + return parseFunctionDefinition(); + } + + + + // For all other expressions, parse as logical expressions + return parseLogicalExpression(); + } + + /** + * Parse assignment statements: identifier : expression; + * + * @returns {Object} Assignment AST node + * @throws {Error} For malformed assignments or missing semicolons + * @description Parses variable assignments and function definitions. + * Supports both simple assignments (x : 42) and arrow function definitions + * (f : x y -> x + y). Also handles when expressions as assignment values. + * + * The function uses lookahead to distinguish between different assignment + * types and parses the value according to the detected type. + */ + function parseAssignment() { + const identifier = tokens[current].value; + current++; // Skip identifier + current++; // Skip assignment token (:) + + // Check if the value is a when expression + if (tokens[current].type === TokenType.WHEN) { + const value = parseWhenExpression(); + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'Assignment', + identifier, + value + }; + } else { + // Check if this is an arrow function: param1 param2 -> body + const params = []; + let isArrowFunction = false; + + // Look ahead to see if this is an arrow function + let lookAhead = current; + while (lookAhead < tokens.length && tokens[lookAhead].type === TokenType.IDENTIFIER) { + lookAhead++; + } + + if (lookAhead < tokens.length && tokens[lookAhead].type === TokenType.ARROW) { + // This is an arrow function + isArrowFunction = true; + + // Parse parameters + while (current < tokens.length && tokens[current].type === TokenType.IDENTIFIER) { + params.push(tokens[current].value); + current++; + } + + if (current >= tokens.length || tokens[current].type !== TokenType.ARROW) { + throw new Error('Expected "->" after parameters in arrow function'); + } + current++; // Skip '->' + + // Check if the body is a when expression + let body; + if (tokens[current].type === TokenType.WHEN) { + body = parseWhenExpression(); + } else { + body = parseLogicalExpression(); + } + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'Assignment', + identifier, + value: { + type: 'FunctionDeclaration', + params, + body + } + }; + } else { + // Parse the value as an expression (function calls will be handled by expression parsing) + const value = parseLogicalExpression(); + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'Assignment', + identifier, + value + }; + } + } + } + + /** + * Parse when expressions: when value is pattern then result pattern then result; + * + * @returns {Object} WhenExpression AST node + * @throws {Error} For malformed when expressions + * @description Parses pattern matching expressions with support for single + * and multiple values/patterns. The when expression is the primary pattern + * matching construct in the language. + * + * Supports: + * - Single value patterns: when x is 42 then "correct" _ then "wrong" + * - Multiple value patterns: when x y is 0 0 then "both zero" _ _ then "not both" + * - Wildcard patterns: _ (matches any value) + * - Function references: @functionName + * + * The function parses values, patterns, and results, building a structured + * AST that the interpreter can efficiently evaluate. + */ + function parseWhenExpression() { + current++; // Skip 'when' + + // Parse the value(s) - can be single value or multiple values + const values = []; + while (current < tokens.length && tokens[current].type !== TokenType.IS) { + // For when expressions, we want to parse simple identifiers and expressions + // but not treat them as function calls + let value; + if (tokens[current].type === TokenType.IDENTIFIER) { + // Check if this is followed by another identifier (multi-value case) + if (current + 1 < tokens.length && + tokens[current + 1].type === TokenType.IDENTIFIER && + tokens[current + 2].type === TokenType.IS) { + // This is a multi-value case like "when x y is" + value = { type: 'Identifier', value: tokens[current].value }; + current++; + values.push(value); + value = { type: 'Identifier', value: tokens[current].value }; + current++; + values.push(value); + break; // We've consumed both values and will hit IS next + } else { + // Single identifier value + value = { type: 'Identifier', value: tokens[current].value }; + current++; + } + } else { + // For other types, use normal expression parsing + value = parseLogicalExpression(); + } + values.push(value); + } + + if (current >= tokens.length || tokens[current].type !== TokenType.IS) { + throw new Error('Expected "is" after value in when expression'); + } + current++; // Skip 'is' + + const cases = []; + + while (current < tokens.length) { + // Parse pattern(s) - can be single pattern or multiple patterns + const patterns = []; + + // Parse patterns until we hit THEN + while (current < tokens.length && tokens[current].type !== TokenType.THEN) { + let pattern; + if (process.env.DEBUG) { + console.log(`[DEBUG] parseWhenExpression: parsing pattern, current token = ${tokens[current].type}, value = ${tokens[current].value || 'N/A'}`); + } + if (tokens[current].type === TokenType.IDENTIFIER) { + pattern = { type: 'Identifier', value: tokens[current].value }; + current++; + } else if (tokens[current].type === TokenType.NUMBER) { + pattern = { type: 'NumberLiteral', value: tokens[current].value }; + current++; + } else if (tokens[current].type === TokenType.STRING) { + pattern = { type: 'StringLiteral', value: tokens[current].value }; + current++; + } else if (tokens[current].type === TokenType.WILDCARD) { + pattern = { type: 'WildcardPattern' }; + current++; + } else if (tokens[current].type === TokenType.FUNCTION_REF) { + pattern = { type: 'FunctionReference', name: tokens[current].name }; + current++; + } else { + throw new Error(`Expected pattern (identifier, number, string, wildcard, or function reference) in when expression, got ${tokens[current].type}`); + } + patterns.push(pattern); + } + + if (current >= tokens.length || tokens[current].type !== TokenType.THEN) { + throw new Error('Expected "then" after pattern in when expression'); + } + current++; // Skip 'then' + + // Parse result + const result = parseLogicalExpression(); + + cases.push({ + pattern: patterns, + result: [result] + }); + + // Stop parsing cases when we hit a semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + break; + } else { + // No semicolon, but check if next token is a valid pattern + if ( + current >= tokens.length || + (tokens[current].type !== TokenType.IDENTIFIER && + tokens[current].type !== TokenType.NUMBER && + tokens[current].type !== TokenType.STRING && + tokens[current].type !== TokenType.WILDCARD && + tokens[current].type !== TokenType.FUNCTION_REF) + ) { + break; + } + } + } + + return { + type: 'WhenExpression', + value: values.length === 1 ? values[0] : values, + cases + }; + } + + /** + * Parse function definitions: function (params) : body + * + * @returns {Object} FunctionDefinition AST node + * @throws {Error} For malformed function definitions + * @description Parses explicit function declarations with parameter lists + * and function bodies. This is the traditional function definition syntax + * as opposed to arrow functions. + * + * The function expects: + * - function keyword + * - Parenthesized parameter list + * - Assignment token (:) + * - Function body expression + */ + function parseFunctionDefinition() { + current++; // Skip 'function' + + if (current >= tokens.length || tokens[current].type !== TokenType.LEFT_PAREN) { + throw new Error('Expected "(" after function keyword'); + } + current++; // Skip '(' + + const parameters = []; + while (current < tokens.length && tokens[current].type !== TokenType.RIGHT_PAREN) { + if (tokens[current].type === TokenType.IDENTIFIER) { + parameters.push(tokens[current].value); + current++; + + if (current < tokens.length && tokens[current].type === TokenType.COMMA) { + current++; // Skip comma + } + } else { + throw new Error('Expected parameter name in function definition'); + } + } + + if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_PAREN) { + throw new Error('Expected ")" after function parameters'); + } + current++; // Skip ')' + + if (current >= tokens.length || tokens[current].type !== TokenType.ASSIGNMENT) { + throw new Error('Expected ":" after function parameters'); + } + current++; // Skip ':' + + const body = parseLogicalExpression(); + + return { + type: 'FunctionDefinition', + parameters, + body + }; + } + + /** + * Parse IO input operations: ..in + * + * @returns {Object} IOInExpression AST node + * @description Parses input operations that read from standard input. + * The operation is represented as a simple AST node that the interpreter + * will handle by prompting for user input. + */ + function parseIOIn() { + current++; // Skip IO_IN token + return { type: 'IOInExpression' }; + } + + /** + * Parse IO output operations: ..out expression + * + * @returns {Object} IOOutExpression AST node + * @throws {Error} For malformed output expressions + * @description Parses output operations that write to standard output. + * The expression to output is parsed as a logical expression and will + * be evaluated by the interpreter before being printed. + */ + function parseIOOut() { + current++; // Skip IO_OUT token + const value = parseLogicalExpression(); + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'IOOutExpression', + value + }; + } + + /** + * Parse IO assert operations: ..assert expression + * + * @returns {Object} IOAssertExpression AST node + * @throws {Error} For malformed assert expressions + * @description Parses assertion operations that verify conditions. + * The expression is parsed as a logical expression and will be evaluated + * by the interpreter. If the result is falsy, an assertion error is thrown. + */ + function parseIOAssert() { + current++; // Skip IO_ASSERT token + const value = parseLogicalExpression(); + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'IOAssertExpression', + value + }; + } + + /** + * Parse logical expressions with proper precedence + * + * @returns {Object} AST node representing the logical expression + * @description Parses logical expressions (and, or, xor) with the lowest + * precedence. All logical operators are translated to FunctionCall nodes + * using the corresponding combinator functions. + * + * Operator precedence (lowest to highest): + * 1. Logical operators (and, or, xor) + * 2. Comparison operators (=, !=, <, >, <=, >=) + * 3. Additive operators (+, -) + * 4. Multiplicative operators (*, /, %) + * 5. Power operator (^) + * 6. Unary operators (not, -) + * 7. Primary expressions (literals, identifiers, function calls, parentheses) + */ + function parseLogicalExpression() { + let left = parseExpression(); + + while (current < tokens.length) { + const token = tokens[current]; + + if (token.type === TokenType.AND || + token.type === TokenType.OR || + token.type === TokenType.XOR) { + current++; + const right = parseExpression(); + left = { + type: 'FunctionCall', + name: token.type === TokenType.AND ? 'logicalAnd' : + token.type === TokenType.OR ? 'logicalOr' : 'logicalXor', + args: [left, right] + }; + } else { + break; + } + } + + return left; + } + + /** + * Parse comparison expressions + * + * @returns {Object} AST node representing the comparison expression + * @description Parses comparison expressions (=, !=, <, >, <=, >=) and + * additive expressions (+, -). All operators are translated to FunctionCall + * nodes using the corresponding combinator functions. + * + * This function implements the core of the combinator-based architecture + * by translating operator expressions to function calls that will be + * executed by the interpreter using standard library combinators. + */ + function parseExpression() { + let left = parseTerm(); + + while (current < tokens.length) { + const token = tokens[current]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] parseExpression: current token = ${token.type}, value = ${token.value || 'N/A'}`); + } + + if (token.type === TokenType.PLUS || token.type === TokenType.MINUS) { + current++; + const right = parseTerm(); + left = { + type: 'FunctionCall', + name: token.type === TokenType.PLUS ? 'add' : 'subtract', + args: [left, right] + }; + } else if (token.type === TokenType.EQUALS || + token.type === TokenType.NOT_EQUAL || + token.type === TokenType.LESS_THAN || + token.type === TokenType.GREATER_THAN || + token.type === TokenType.LESS_EQUAL || + token.type === TokenType.GREATER_EQUAL) { + current++; + const right = parseTerm(); + left = { + type: 'FunctionCall', + name: token.type === TokenType.EQUALS ? 'equals' : + token.type === TokenType.NOT_EQUAL ? 'notEquals' : + token.type === TokenType.LESS_THAN ? 'lessThan' : + token.type === TokenType.GREATER_THAN ? 'greaterThan' : + token.type === TokenType.LESS_EQUAL ? 'lessEqual' : 'greaterEqual', + args: [left, right] + }; + } else { + break; + } + } + + return left; + } + + /** + * Parse multiplication and division expressions + * + * @returns {Object} AST node representing the multiplicative expression + * @description Parses multiplicative expressions (*, /, %) with higher + * precedence than additive expressions. All operators are translated to + * FunctionCall nodes using the corresponding combinator functions. + */ + function parseTerm() { + let left = parseFactor(); + + while (current < tokens.length) { + const token = tokens[current]; + + if (token.type === TokenType.MULTIPLY || + token.type === TokenType.DIVIDE || + token.type === TokenType.MODULO) { + current++; + const right = parseFactor(); + left = { + type: 'FunctionCall', + name: token.type === TokenType.MULTIPLY ? 'multiply' : + token.type === TokenType.DIVIDE ? 'divide' : 'modulo', + args: [left, right] + }; + } else { + break; + } + } + + return left; + } + + /** + * Parse power expressions and unary operators + * + * @returns {Object} AST node representing the factor expression + * @description Parses power expressions (^) and unary operators (not, -) + * with the highest precedence among operators. All operators are translated + * to FunctionCall nodes using the corresponding combinator functions. + */ + function parseFactor() { + let left = parsePrimary(); + + while (current < tokens.length) { + const token = tokens[current]; + + if (token.type === TokenType.POWER) { + current++; + const right = parsePrimary(); + left = { + type: 'FunctionCall', + name: 'power', + args: [left, right] + }; + } else { + break; + } + } + + return left; + } + + /** + * Parse table literals: {key: value, key2: value2} or {value1, value2, value3} + * + * @returns {Object} TableLiteral AST node + * @throws {Error} For malformed table literals + * @description Parses table literals with support for both key-value pairs + * and array-like entries. Tables are the primary data structure in the language. + * + * Supports: + * - Key-value pairs: {name: "Alice", age: 30} + * - Array-like entries: {1, 2, 3} + * - Mixed entries: {1, 2, name: "Alice", 3} + * + * Array-like entries are automatically assigned numeric keys starting from 1. + */ + function parseTableLiteral() { + current++; // Skip '{' + + const entries = []; + + while (current < tokens.length && tokens[current].type !== TokenType.RIGHT_BRACE) { + // Check if this is a key-value pair or just a value + let key = null; + let value; + + // Parse the first element + if (tokens[current].type === TokenType.IDENTIFIER) { + // Could be a key or a value + const identifier = tokens[current].value; + current++; + + if (current < tokens.length && tokens[current].type === TokenType.ASSIGNMENT) { + // This is a key-value pair: key : value + key = { type: 'Identifier', value: identifier }; + current++; // Skip ':' + value = parseLogicalExpression(); + } else { + // This is just a value (array-like entry) + value = { type: 'Identifier', value: identifier }; + } + } else { + // This is a value (array-like entry) + value = parseLogicalExpression(); + } + + entries.push({ key, value }); + + // Skip comma if present + if (current < tokens.length && tokens[current].type === TokenType.COMMA) { + current++; + } + } + + if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_BRACE) { + throw new Error('Expected "}" after table literal'); + } + current++; // Skip '}' + + return { + type: 'TableLiteral', + entries + }; + } + + + + /** + * Parse function calls: functionName arg1 arg2 ... + * + * @returns {Object} FunctionCall AST node + * @description Parses function calls with multiple arguments. This function + * is used by parsePrimary to detect when an identifier is followed by + * expressions that should be treated as function arguments. + * + * Function calls are detected by the presence of an identifier followed + * by expressions that are not operators. The parser uses lookahead to + * determine if an identifier should be treated as a function call. + */ + function parseFunctionCall() { + const functionName = tokens[current].value; + current++; // Skip function name + + // Parse arguments until we hit a semicolon or end of tokens + const args = []; + while (current < tokens.length && tokens[current].type !== TokenType.SEMICOLON) { + const arg = parseLogicalExpression(); + args.push(arg); + } + + return { + type: 'FunctionCall', + name: functionName, + args + }; + } + + /** + * Parse primary expressions (literals, identifiers, parenthesized expressions) + * + * @returns {Object} AST node representing the primary expression + * @throws {Error} For unexpected tokens or malformed expressions + * @description Parses the highest precedence expressions including literals, + * identifiers, function calls, table access, and parenthesized expressions. + * This is the foundation of the expression parsing hierarchy. + * + * The function implements sophisticated function call detection by looking + * for identifiers followed by expressions that could be arguments. This + * approach allows the language to support both traditional function calls + * and the ML-style function application syntax. + * + * Supports: + * - Literals: numbers, strings, booleans + * - Identifiers: variables and function names + * - Function calls: f(x, y) or f x y + * - Table access: table[key] or table.property + * - Parenthesized expressions: (x + y) + * - Unary operators: not x, -x + * - Function references: @functionName + */ + function parsePrimary() { + const token = tokens[current]; + + if (!token) { + throw new Error('Unexpected end of input'); + } + + if (process.env.DEBUG) { + console.log(`[DEBUG] parsePrimary: current token = ${token.type}, value = ${token.value || 'N/A'}`); + } + + switch (token.type) { + case TokenType.NUMBER: + current++; + return { type: 'NumberLiteral', value: token.value }; + + case TokenType.STRING: + current++; + return { type: 'StringLiteral', value: token.value }; + + case TokenType.TRUE: + current++; + return { type: 'BooleanLiteral', value: true }; + + case TokenType.FALSE: + current++; + return { type: 'BooleanLiteral', value: false }; + + case TokenType.IDENTIFIER: + const identifierValue = token.value; + current++; + + // Check for table access: identifier[key] or identifier.property + if (current < tokens.length && tokens[current].type === TokenType.LEFT_BRACKET) { + current++; // Skip '[' + const keyExpression = parseLogicalExpression(); + + if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_BRACKET) { + throw new Error('Expected "]" after table key'); + } + current++; // Skip ']' + + return { + type: 'TableAccess', + table: { type: 'Identifier', value: identifierValue }, + key: keyExpression + }; + } else if (current < tokens.length && tokens[current].type === TokenType.DOT) { + current++; // Skip '.' + + if (current >= tokens.length || tokens[current].type !== TokenType.IDENTIFIER) { + throw new Error('Expected identifier after "." in table access'); + } + + const propertyName = tokens[current].value; + current++; // Skip property name + + return { + type: 'TableAccess', + table: { type: 'Identifier', value: identifierValue }, + key: { type: 'Identifier', value: propertyName } + }; + } + + // Parse function call arguments (including parenthesized expressions) + const args = []; + while ( + current < tokens.length && + ( + tokens[current].type === TokenType.IDENTIFIER || + tokens[current].type === TokenType.NUMBER || + tokens[current].type === TokenType.STRING || + tokens[current].type === TokenType.LEFT_PAREN || + tokens[current].type === TokenType.LEFT_BRACE || + tokens[current].type === TokenType.TRUE || + tokens[current].type === TokenType.FALSE || + tokens[current].type === TokenType.FUNCTION_REF || + (tokens[current].type === TokenType.MINUS && + current + 1 < tokens.length && + tokens[current + 1].type === TokenType.NUMBER) + ) + ) { + // Special case: if we see FUNCTION_REF followed by MINUS followed by NUMBER, + // parse them as separate arguments + if (tokens[current].type === TokenType.FUNCTION_REF && + current + 1 < tokens.length && tokens[current + 1].type === TokenType.MINUS && + current + 2 < tokens.length && tokens[current + 2].type === TokenType.NUMBER) { + // Parse the function reference + args.push(parsePrimary()); + // Parse the unary minus as a separate argument + args.push(parsePrimary()); + } else { + // Parse each argument as a complete expression + args.push(parseExpression()); + } + } + if (args.length > 0) { + return { + type: 'FunctionCall', + name: identifierValue, + args + }; + } + return { type: 'Identifier', value: identifierValue }; + + case TokenType.LEFT_PAREN: + current++; + if (process.env.DEBUG) { + console.log(`[DEBUG] parsePrimary: parsing LEFT_PAREN, current token = ${tokens[current].type}`); + } + const expression = parseLogicalExpression(); + if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_PAREN) { + throw new Error('Expected ")" after expression'); + } + current++; + return expression; + + case TokenType.WILDCARD: + current++; + return { type: 'WildcardPattern' }; + + case TokenType.LEFT_BRACE: + return parseTableLiteral(); + + + + case TokenType.NOT: + current++; + const operand = parsePrimary(); + return { + type: 'FunctionCall', + name: 'logicalNot', + args: [operand] + }; + + case TokenType.MINUS: + current++; + const unaryOperand = parsePrimary(); + return { + type: 'FunctionCall', + name: 'negate', + args: [unaryOperand] + }; + + case TokenType.ARROW: + current++; + const arrowBody = parseLogicalExpression(); + return { type: 'ArrowExpression', body: arrowBody }; + + case TokenType.FUNCTION_REF: + const functionRef = { type: 'FunctionReference', name: token.name }; + current++; + return functionRef; + + default: + throw new Error(`Unexpected token in parsePrimary: ${token.type}`); + } + } + + return parse(); +} </code></pre> + </article> + </section> + + + + +</div> + +<nav> + <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#TokenType">TokenType</a></li><li><a href="global.html#callStackTracker">callStackTracker</a></li><li><a href="global.html#debugError">debugError</a></li><li><a href="global.html#debugLog">debugLog</a></li><li><a href="global.html#executeFile">executeFile</a></li><li><a href="global.html#initializeStandardLibrary">initializeStandardLibrary</a></li><li><a href="global.html#interpreter">interpreter</a></li><li><a href="global.html#lexer">lexer</a></li><li><a href="global.html#main">main</a></li><li><a href="global.html#parser">parser</a></li><li><a href="global.html#readFile">readFile</a></li></ul> +</nav> + +<br class="clear"> + +<footer> + Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.3</a> on Sun Jul 27 2025 10:38:30 GMT-0400 (Eastern Daylight Time) +</footer> + +<script> prettyPrint(); </script> +<script src="scripts/linenumber.js"> </script> +</body> +</html> diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/linenumber.js b/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/linenumber.js new file mode 100644 index 0000000..4354785 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(() => { + const source = document.getElementsByClassName('prettyprint source linenums'); + let i = 0; + let lineNumber = 0; + let lineId; + let lines; + let totalLines; + let anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = `line${lineNumber}`; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/Apache-License-2.0.txt b/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/lang-css.js b/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/lang-css.js new file mode 100644 index 0000000..041e1f5 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/prettify.js b/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/prettify.js new file mode 100644 index 0000000..eef5ad7 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c< +f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&& +(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r= +{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length, +t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b=== +"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value", +m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m= +a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue= +j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m, +250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit", +PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})(); diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/styles/jsdoc-default.css b/js/scripting-lang/docs/scripting-lang/0.0.1/styles/jsdoc-default.css new file mode 100644 index 0000000..7d1729d --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/styles/jsdoc-default.css @@ -0,0 +1,358 @@ +@font-face { + font-family: 'Open Sans'; + font-weight: normal; + font-style: normal; + src: url('../fonts/OpenSans-Regular-webfont.eot'); + src: + local('Open Sans'), + local('OpenSans'), + url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), + url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg'); +} + +@font-face { + font-family: 'Open Sans Light'; + font-weight: normal; + font-style: normal; + src: url('../fonts/OpenSans-Light-webfont.eot'); + src: + local('Open Sans Light'), + local('OpenSans Light'), + url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/OpenSans-Light-webfont.woff') format('woff'), + url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg'); +} + +html +{ + overflow: auto; + background-color: #fff; + font-size: 14px; +} + +body +{ + font-family: 'Open Sans', sans-serif; + line-height: 1.5; + color: #4d4e53; + background-color: white; +} + +a, a:visited, a:active { + color: #0095dd; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +header +{ + display: block; + padding: 0px 4px; +} + +tt, code, kbd, samp { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.class-description { + font-size: 130%; + line-height: 140%; + margin-bottom: 1em; + margin-top: 1em; +} + +.class-description:empty { + margin: 0; +} + +#main { + float: left; + width: 70%; +} + +article dl { + margin-bottom: 40px; +} + +article img { + max-width: 100%; +} + +section +{ + display: block; + background-color: #fff; + padding: 12px 24px; + border-bottom: 1px solid #ccc; + margin-right: 30px; +} + +.variation { + display: none; +} + +.signature-attributes { + font-size: 60%; + color: #aaa; + font-style: italic; + font-weight: lighter; +} + +nav +{ + display: block; + float: right; + margin-top: 28px; + width: 30%; + box-sizing: border-box; + border-left: 1px solid #ccc; + padding-left: 16px; +} + +nav ul { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; + font-size: 100%; + line-height: 17px; + padding: 0; + margin: 0; + list-style-type: none; +} + +nav ul a, nav ul a:visited, nav ul a:active { + font-family: Consolas, Monaco, 'Andale Mono', monospace; + line-height: 18px; + color: #4D4E53; +} + +nav h3 { + margin-top: 12px; +} + +nav li { + margin-top: 6px; +} + +footer { + display: block; + padding: 6px; + margin-top: 12px; + font-style: italic; + font-size: 90%; +} + +h1, h2, h3, h4 { + font-weight: 200; + margin: 0; +} + +h1 +{ + font-family: 'Open Sans Light', sans-serif; + font-size: 48px; + letter-spacing: -2px; + margin: 12px 24px 20px; +} + +h2, h3.subsection-title +{ + font-size: 30px; + font-weight: 700; + letter-spacing: -1px; + margin-bottom: 12px; +} + +h3 +{ + font-size: 24px; + letter-spacing: -0.5px; + margin-bottom: 12px; +} + +h4 +{ + font-size: 18px; + letter-spacing: -0.33px; + margin-bottom: 12px; + color: #4d4e53; +} + +h5, .container-overview .subsection-title +{ + font-size: 120%; + font-weight: bold; + letter-spacing: -0.01em; + margin: 8px 0 3px 0; +} + +h6 +{ + font-size: 100%; + letter-spacing: -0.01em; + margin: 6px 0 3px 0; + font-style: italic; +} + +table +{ + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +td, th +{ + border: 1px solid #ddd; + margin: 0px; + text-align: left; + vertical-align: top; + padding: 4px 6px; + display: table-cell; +} + +thead tr +{ + background-color: #ddd; + font-weight: bold; +} + +th { border-right: 1px solid #aaa; } +tr > th:last-child { border-right: 1px solid #ddd; } + +.ancestors, .attribs { color: #999; } +.ancestors a, .attribs a +{ + color: #999 !important; + text-decoration: none; +} + +.clear +{ + clear: both; +} + +.important +{ + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px; +} + +.type-signature { + color: #aaa; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.details { margin-top: 14px; border-left: 2px solid #DDD; } +.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } +.details dd { margin-left: 70px; } +.details ul { margin: 0; } +.details ul { list-style-type: none; } +.details li { margin-left: 30px; padding-top: 6px; } +.details pre.prettyprint { margin: 0 } +.details .object-value { padding-top: 0; } + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption +{ + font-style: italic; + font-size: 107%; + margin: 0; +} + +.source +{ + border: 1px solid #ddd; + width: 80%; + overflow: auto; +} + +.prettyprint.source { + width: inherit; +} + +.source code +{ + font-size: 100%; + line-height: 18px; + display: block; + padding: 4px 12px; + margin: 0; + background-color: #fff; + color: #4D4E53; +} + +.prettyprint code span.line +{ + display: inline-block; +} + +.prettyprint.linenums +{ + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol +{ + padding-left: 0; +} + +.prettyprint.linenums li +{ + border-left: 3px #ddd solid; +} + +.prettyprint.linenums li.selected, +.prettyprint.linenums li.selected * +{ + background-color: lightyellow; +} + +.prettyprint.linenums li * +{ + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td.description > p:first-child, +.props td.description > p:first-child +{ + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, +.props td.description > p:last-child +{ + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/styles/prettify-jsdoc.css b/js/scripting-lang/docs/scripting-lang/0.0.1/styles/prettify-jsdoc.css new file mode 100644 index 0000000..5a2526e --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/js/scripting-lang/docs/scripting-lang/0.0.1/styles/prettify-tomorrow.css b/js/scripting-lang/docs/scripting-lang/0.0.1/styles/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/js/scripting-lang/docs/scripting-lang/0.0.1/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/js/scripting-lang/grammar.ebnf b/js/scripting-lang/grammar.ebnf deleted file mode 100644 index b595c87..0000000 --- a/js/scripting-lang/grammar.ebnf +++ /dev/null @@ -1,76 +0,0 @@ -(* Scripting Language Grammar *) - -(* Program Structure *) -program = statement_list -statement_list = statement { statement } -statement = assignment | function_declaration | expression | io_statement | ";" - -(* Variables and Assignment *) -assignment = identifier ":" value -value = expression | function_call - -(* Function Declarations *) -function_declaration = identifier ":" parameter_list "->" function_body -parameter_list = identifier { identifier } -function_body = expression | case_expression - -(* Expressions *) -expression = arithmetic_expression | identifier | number | string - -(* Arithmetic Expressions *) -arithmetic_expression = arithmetic_operator expression expression -arithmetic_operator = "+" | "-" | "*" | "/" - -(* Function Calls *) -function_call = identifier argument_list -argument_list = expression { expression } - -(* Case Expressions *) -case_expression = "case" value_list "of" case_list -value_list = expression { expression } -case_list = case_branch { case_branch } -case_branch = pattern ":" result -pattern = pattern_element { pattern_element } -pattern_element = number | wildcard | identifier -result = result_element { result_element } -result_element = string | number | identifier - -(* IO Statements *) -io_statement = io_operator [ expression ] -io_operator = "..in" | "..out" - -(* Terminals *) -identifier = letter { letter | digit } -number = digit { digit } -string = '"' { character } '"' -wildcard = "_" -letter = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" -digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" -character = letter | digit | " " | "!" | "#" | "$" | "%" | "&" | "'" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | "<" | "=" | ">" | "?" | "@" | "[" | "\" | "]" | "^" | "`" | "{" | "|" | "}" | "~" - -(* Comments *) -(* This language does not support comments *) - -(* Examples *) - -(* Variable assignment *) -(* x : 5; *) - -(* Function declaration *) -(* add : x y -> x + y; *) - -(* Function call *) -(* result : add 3 4; *) - -(* Case expression *) -(* compare : x y -> - case x y of - 0 0 : "both zero" - 0 _ : "x is zero" - _ 0 : "y is zero" - _ _ : "neither zero"; *) - -(* IO statements *) -(* name : ..in; - ..out "Hello, "; - ..out name; *) \ No newline at end of file diff --git a/js/scripting-lang/grammar_detailed.ebnf b/js/scripting-lang/grammar_detailed.ebnf deleted file mode 100644 index 5274cd8..0000000 --- a/js/scripting-lang/grammar_detailed.ebnf +++ /dev/null @@ -1,97 +0,0 @@ -(* Detailed Scripting Language Grammar *) - -(* Program Structure *) -program = statement_list -statement_list = statement { statement } -statement = assignment | function_declaration | expression_statement | io_statement | ";" - -(* Variables and Assignment *) -assignment = identifier ":" assignment_value -assignment_value = function_call | simple_expression - -(* Function Declarations *) -function_declaration = identifier ":" parameter_list "->" function_body -parameter_list = identifier { identifier } -function_body = arithmetic_expression | case_expression - -(* Function Calls *) -function_call = identifier argument_list -argument_list = expression { expression } - -(* Expressions *) -expression = arithmetic_expression | simple_expression -simple_expression = identifier | number | string -expression_statement = expression - -(* Arithmetic Expressions - Prefix Notation *) -arithmetic_expression = arithmetic_operator expression expression -arithmetic_operator = "+" | "-" | "*" | "/" - -(* Case Expressions *) -case_expression = "case" value_list "of" case_list -value_list = expression { expression } -case_list = case_branch { case_branch } -case_branch = pattern ":" result -pattern = pattern_element { pattern_element } -pattern_element = number | wildcard | identifier -result = result_element { result_element } -result_element = string | number | identifier - -(* IO Statements *) -io_statement = io_operator [ expression ] -io_operator = "..in" | "..out" - -(* Terminals *) -identifier = letter { letter | digit } -number = digit { digit } -string = '"' { character } '"' -wildcard = "_" -letter = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" -digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" -character = letter | digit | " " | "!" | "#" | "$" | "%" | "&" | "'" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | "<" | "=" | ">" | "?" | "@" | "[" | "\" | "]" | "^" | "`" | "{" | "|" | "}" | "~" - -(* Parsing Precedence and Disambiguation *) - -(* Key Insights from Debug Analysis: *) - -(* 1. Assignment parsing needs to distinguish between function calls and simple values *) -(* assignment_value = function_call | simple_expression *) - -(* 2. Function calls in assignments: "result : add 3 4;" *) -(* - "add" is an identifier *) -(* - "3" and "4" are arguments *) -(* - Should parse as: assignment(identifier("result"), function_call("add", [3, 4])) *) - -(* 3. Case expressions work correctly but function calls within them don't *) -(* - Case patterns: "0 0", "0 _", "_ 0", "_ _" *) -(* - Case results: string literals, numbers, identifiers *) - -(* 4. Arithmetic expressions use prefix notation *) -(* - "+ x y" not "x + y" *) -(* - "* 5 2" not "5 * 2" *) - -(* 5. IO statements are special *) -(* - "..in" reads from stdin *) -(* - "..out expression" writes to stdout *) - -(* Examples with Parse Trees *) - -(* Example 1: Simple assignment *) -(* Input: "x : 5;" *) -(* Parse: assignment(identifier("x"), number(5)) *) - -(* Example 2: Function call assignment *) -(* Input: "result : add 3 4;" *) -(* Parse: assignment(identifier("result"), function_call("add", [number(3), number(4)])) *) - -(* Example 3: Case expression *) -(* Input: "compare : x y -> case x y of 0 0 : \"both zero\";" *) -(* Parse: function_declaration("compare", ["x", "y"], case_expression([identifier("x"), identifier("y")], [case_branch([number(0), number(0)], [string("both zero")])])) *) - -(* Example 4: Arithmetic expression *) -(* Input: "sum : + x y;" *) -(* Parse: assignment(identifier("sum"), arithmetic_expression("+", identifier("x"), identifier("y"))) *) - -(* Example 5: IO statement *) -(* Input: "..out \"Hello\";" *) -(* Parse: io_statement("..out", string("Hello")) *) \ No newline at end of file diff --git a/js/scripting-lang/lang.js b/js/scripting-lang/lang.js index 5190b2f..d3bc0b5 100644 --- a/js/scripting-lang/lang.js +++ b/js/scripting-lang/lang.js @@ -1,1263 +1,1443 @@ -// The goal here is less to make anything useful...or even something that works, but to learn what parts an interpreted languages needs to have to function. +// Cross-platform scripting language implementation +// Supports Node.js, Bun, and browser environments -// Define the types of tokens -const TokenType = { - NUMBER: 'NUMBER', - PLUS: 'PLUS', - MINUS: 'MINUS', - MULTIPLY: 'MULTIPLY', - DIVIDE: 'DIVIDE', - IDENTIFIER: 'IDENTIFIER', - ASSIGNMENT: 'ASSIGNMENT', - ARROW: 'ARROW', - CASE: 'CASE', - OF: 'OF', - WILDCARD: 'WILDCARD', - FUNCTION: 'FUNCTION', - LEFT_PAREN: 'LEFT_PAREN', - RIGHT_PAREN: 'RIGHT_PAREN', - LEFT_BRACE: 'LEFT_BRACE', - RIGHT_BRACE: 'RIGHT_BRACE', - SEMICOLON: 'SEMICOLON', - IO_IN: 'IO_IN', - IO_OUT: 'IO_OUT', - IO_ASSERT: 'IO_ASSERT', - EQUALS: 'EQUALS', - FUNCTION_REF: 'FUNCTION_REF', - STRING: 'STRING', -}; - -// Lexer -function lexer(input) { - debugLog('Starting lexer with input', input); - const tokens = []; - let current = 0; - - while (current < input.length) { - let char = input[current]; - - if (/\d/.test(char)) { - let value = ''; - while (/\d/.test(char)) { - value += char; - char = input[++current]; - } - tokens.push({ - type: TokenType.NUMBER, - value - }); - continue; - } - - if (char === '+') { - tokens.push({ - type: TokenType.PLUS - }); - current++; - continue; - } - - if (input.slice(current, current + 2) === '->') { - tokens.push({ - type: TokenType.ARROW - }); - current += 2; - continue; - } - - if (char === '-') { - tokens.push({ - type: TokenType.MINUS - }); - current++; - continue; - } - - if (char === '*') { - tokens.push({ - type: TokenType.MULTIPLY - }); - current++; - continue; - } +import { lexer, TokenType } from './lexer.js'; +import { parser } from './parser.js'; - if (char === '/') { - tokens.push({ - type: TokenType.DIVIDE - }); - current++; - continue; - } - - // Check for keywords before general identifiers - if (input.slice(current, current + 4) === 'case') { - tokens.push({ - type: TokenType.CASE - }); - current += 4; - continue; - } - - if (input.slice(current, current + 2) === 'of') { - tokens.push({ - type: TokenType.OF - }); - current += 2; - continue; +/** + * Initializes the standard library in the provided scope. + * + * @param {Object} scope - The global scope object to inject functions into + * @description Injects higher-order functions and combinator functions into the interpreter's global scope. + * These functions provide functional programming utilities and implement the combinator foundation + * that eliminates parsing ambiguity by translating all operations to function calls. + * + * The standard library includes: + * - Higher-order functions (map, compose, pipe, apply, filter, reduce, fold, curry) + * - Arithmetic combinators (add, subtract, multiply, divide, modulo, power, negate) + * - Comparison combinators (equals, notEquals, lessThan, greaterThan, lessEqual, greaterEqual) + * - Logical combinators (logicalAnd, logicalOr, logicalXor, logicalNot) + * - Enhanced combinators (identity, constant, flip, on, both, either) + * + * This approach ensures that user code can access these functions as if they were built-in, + * without special syntax or reserved keywords. The combinator foundation allows the parser + * to translate all operators to function calls, eliminating ambiguity while preserving syntax. + * + * Functions are written to check argument types at runtime since the language is dynamically + * typed and does not enforce arity or types at parse time. + */ +function initializeStandardLibrary(scope) { + /** + * Map: Apply a function to a value + * @param {Function} f - Function to apply + * @param {*} x - Value to apply function to + * @returns {*} Result of applying f to x + * @throws {Error} When first argument is not a function + */ + scope.map = function(f, x) { + if (typeof f === 'function') { + return f(x); + } else { + throw new Error('map: first argument must be a function'); } - - if (/[a-z]/i.test(char)) { - let value = ''; - while (/[a-z0-9]/i.test(char)) { - value += char; - char = input[++current]; + }; + + /** + * Compose: Compose two functions (f ∘ g)(x) = f(g(x)) + * @param {Function} f - Outer function + * @param {Function} g - Inner function + * @param {*} [x] - Optional argument to apply composed function to + * @returns {Function|*} Either a composed function or the result of applying it + * @throws {Error} When first two arguments are not functions + */ + scope.compose = function(f, g, x) { + if (typeof f === 'function' && typeof g === 'function') { + if (arguments.length === 3) { + return f(g(x)); + } else { + return function(x) { + return f(g(x)); + }; } - tokens.push({ - type: TokenType.IDENTIFIER, - value - }); - continue; - } - - if (char === ':') { - tokens.push({ - type: TokenType.ASSIGNMENT - }); - current++; - continue; - } - - if (input.slice(current, current + 2) === '==') { - tokens.push({ - type: TokenType.EQUALS - }); - current += 2; - continue; - } - - if (char === '@') { - tokens.push({ - type: TokenType.FUNCTION_REF - }); - current++; - continue; - } - - if (char === '=') { - tokens.push({ - type: TokenType.EQUAL - }); - current++; - continue; - } - - - - if (char === '_') { - tokens.push({ - type: TokenType.WILDCARD - }); - current++; - continue; - } - - if (char === '(') { - tokens.push({ - type: TokenType.LEFT_PAREN - }); - current++; - continue; - } - - if (char === ')') { - tokens.push({ - type: TokenType.RIGHT_PAREN - }); - current++; - continue; - } - - if (char === '{') { - tokens.push({ - type: TokenType.LEFT_BRACE - }); - current++; - continue; - } - - if (char === '}') { - tokens.push({ - type: TokenType.RIGHT_BRACE - }); - current++; - continue; - } - - if (input.slice(current, current + 8) === 'function') { - tokens.push({ - type: TokenType.FUNCTION - }); - current += 8; - continue; - } - - // Check for IO tokens - if (input.slice(current, current + 4) === '..in') { - tokens.push({ - type: TokenType.IO_IN - }); - current += 4; - continue; + } else { + throw new Error('compose: first two arguments must be functions'); } - - if (input.slice(current, current + 5) === '..out') { - tokens.push({ - type: TokenType.IO_OUT - }); - current += 5; - continue; + }; + + /** + * Curry: Apply a function to arguments (simplified currying) + * @param {Function} f - Function to curry + * @param {*} x - First argument + * @param {*} y - Second argument + * @returns {*} Result of applying f to x and y + * @throws {Error} When first argument is not a function + */ + scope.curry = function(f, x, y) { + if (typeof f === 'function') { + return f(x, y); + } else { + throw new Error('curry: first argument must be a function'); } - - if (input.slice(current, current + 8) === '..assert') { - tokens.push({ - type: TokenType.IO_ASSERT - }); - current += 8; - continue; + }; + + /** + * Apply: Apply a function to an argument (explicit function application) + * @param {Function} f - Function to apply + * @param {*} x - Argument to apply function to + * @returns {*} Result of applying f to x + * @throws {Error} When first argument is not a function + */ + scope.apply = function(f, x) { + if (typeof f === 'function') { + return f(x); + } else { + throw new Error('apply: first argument must be a function'); } - - // Handle string literals - if (char === '"') { - let value = ''; - current++; // Skip opening quote - while (current < input.length && input[current] !== '"') { - value += input[current]; - current++; - } - if (current < input.length && input[current] === '"') { - current++; // Skip closing quote - tokens.push({ - type: TokenType.STRING, - value - }); - continue; + }; + + /** + * Pipe: Compose functions in left-to-right order (opposite of compose) + * @param {Function} f - First function + * @param {Function} g - Second function + * @param {*} [x] - Optional argument to apply piped function to + * @returns {Function|*} Either a piped function or the result of applying it + * @throws {Error} When first two arguments are not functions + */ + scope.pipe = function(f, g, x) { + if (typeof f === 'function' && typeof g === 'function') { + if (arguments.length === 3) { + return g(f(x)); } else { - throw new Error('Unterminated string literal'); - } - } - - if (char === ';') { - tokens.push({ type: TokenType.SEMICOLON }); - current++; - continue; - } - - if (/[a-z]/i.test(char)) { - let value = ''; - while (/[a-z0-9]/i.test(char)) { - value += char; - char = input[++current]; + return function(x) { + return g(f(x)); + }; } - tokens.push({ - type: TokenType.IDENTIFIER, - value - }); - continue; + } else { + throw new Error('pipe: first two arguments must be functions'); } - - current++; - } - - return tokens; -} - -// Parser -function parser(tokens) { - debugLog('Starting parser with tokens', tokens); - let current = 0; - - function walk() { - if (current >= tokens.length) { - return null; // Return null when there are no more tokens + }; + + /** + * Filter: Filter a value based on a predicate + * @param {Function} p - Predicate function + * @param {*} x - Value to test + * @returns {*|0} The value if predicate is true, 0 otherwise + * @throws {Error} When first argument is not a function + */ + scope.filter = function(p, x) { + if (typeof p === 'function') { + return p(x) ? x : 0; + } else { + throw new Error('filter: first argument must be a function'); } - - let token = tokens[current]; - - if (token.type === TokenType.NUMBER) { - current++; - return { - type: 'NumberLiteral', - value: token.value, - }; + }; + + /** + * Reduce: Reduce two values using a binary function + * @param {Function} f - Binary function + * @param {*} init - Initial value + * @param {*} x - Second value + * @returns {*} Result of applying f to init and x + * @throws {Error} When first argument is not a function + */ + scope.reduce = function(f, init, x) { + if (typeof f === 'function') { + return f(init, x); + } else { + throw new Error('reduce: first argument must be a function'); } - - if (token.type === TokenType.STRING) { - current++; - return { - type: 'StringLiteral', - value: token.value, - }; + }; + + /** + * Fold: Same as reduce, but more explicit about the folding direction + * @param {Function} f - Binary function + * @param {*} init - Initial value + * @param {*} x - Second value + * @returns {*} Result of applying f to init and x + * @throws {Error} When first argument is not a function + */ + scope.fold = function(f, init, x) { + if (typeof f === 'function') { + return f(init, x); + } else { + throw new Error('fold: first argument must be a function'); } - - if (token.type === TokenType.WILDCARD) { - current++; - return { - type: 'WildcardPattern', - }; + }; + + // ===== ARITHMETIC COMBINATORS ===== + + /** + * Add: Add two numbers + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Sum of x and y + */ + scope.add = function(x, y) { + return x + y; + }; + + /** + * Subtract: Subtract second number from first + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Difference of x and y + */ + scope.subtract = function(x, y) { + return x - y; + }; + + /** + * Multiply: Multiply two numbers + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Product of x and y + */ + scope.multiply = function(x, y) { + return x * y; + }; + + /** + * Divide: Divide first number by second + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Quotient of x and y + * @throws {Error} When second argument is zero + */ + scope.divide = function(x, y) { + if (y === 0) { + throw new Error('Division by zero'); } - - if (token.type === TokenType.IO_IN) { - current++; - return { - type: 'IOInExpression', + return x / y; + }; + + /** + * Modulo: Get remainder of division + * @param {number} x - First number + * @param {number} y - Second number + * @returns {number} Remainder of x divided by y + */ + scope.modulo = function(x, y) { + return x % y; + }; + + /** + * Power: Raise first number to power of second + * @param {number} x - Base number + * @param {number} y - Exponent + * @returns {number} x raised to the power of y + */ + scope.power = function(x, y) { + return Math.pow(x, y); + }; + + /** + * Negate: Negate a number + * @param {number} x - Number to negate + * @returns {number} Negated value of x + */ + scope.negate = function(x) { + return -x; + }; + + // ===== COMPARISON COMBINATORS ===== + + /** + * Equals: Check if two values are equal + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x equals y + */ + scope.equals = function(x, y) { + return x === y; + }; + + /** + * NotEquals: Check if two values are not equal + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x does not equal y + */ + scope.notEquals = function(x, y) { + return x !== y; + }; + + /** + * LessThan: Check if first value is less than second + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x < y + */ + scope.lessThan = function(x, y) { + return x < y; + }; + + /** + * GreaterThan: Check if first value is greater than second + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x > y + */ + scope.greaterThan = function(x, y) { + return x > y; + }; + + /** + * LessEqual: Check if first value is less than or equal to second + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x <= y + */ + scope.lessEqual = function(x, y) { + return x <= y; + }; + + /** + * GreaterEqual: Check if first value is greater than or equal to second + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if x >= y + */ + scope.greaterEqual = function(x, y) { + return x >= y; + }; + + // ===== LOGICAL COMBINATORS ===== + + /** + * LogicalAnd: Logical AND of two values + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if both x and y are truthy + */ + scope.logicalAnd = function(x, y) { + return !!(x && y); + }; + + /** + * LogicalOr: Logical OR of two values + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if either x or y is truthy + */ + scope.logicalOr = function(x, y) { + return !!(x || y); + }; + + /** + * LogicalXor: Logical XOR of two values + * @param {*} x - First value + * @param {*} y - Second value + * @returns {boolean} True if exactly one of x or y is truthy + */ + scope.logicalXor = function(x, y) { + return !!((x && !y) || (!x && y)); + }; + + /** + * LogicalNot: Logical NOT of a value + * @param {*} x - Value to negate + * @returns {boolean} True if x is falsy, false if x is truthy + */ + scope.logicalNot = function(x) { + return !x; + }; + + // ===== ASSIGNMENT COMBINATOR ===== + + /** + * Assign: Assign a value to a variable name + * @param {string} name - Variable name + * @param {*} value - Value to assign + * @returns {*} The assigned value + * @throws {Error} When trying to reassign an immutable variable + * @note This function needs access to the global scope, so it will be + * set up during interpreter initialization + */ + // Note: assign will be set up in the interpreter with access to globalScope + + // ===== ENHANCED HIGHER-ORDER COMBINATORS ===== + + /** + * Identity: Return the input unchanged + * @param {*} x - Any value + * @returns {*} The same value + */ + scope.identity = function(x) { + return x; + }; + + /** + * Constant: Create a function that always returns the same value + * @param {*} x - Value to return + * @param {*} [y] - Optional second argument (ignored) + * @returns {*} The value x, or a function if only one argument provided + */ + scope.constant = function(x, y) { + if (arguments.length === 2) { + return x; + } else { + return function(y) { + return x; }; } - - if (token.type === TokenType.IO_OUT) { - current++; - const value = walk(); - return { - type: 'IOOutExpression', - value, + }; + + /** + * Flip: Flip the order of arguments for a binary function + * @param {Function} f - Binary function + * @param {*} [x] - Optional first argument + * @param {*} [y] - Optional second argument + * @returns {Function|*} Function with flipped argument order, or result if arguments provided + */ + scope.flip = function(f, x, y) { + if (arguments.length === 3) { + return f(y, x); + } else { + return function(x, y) { + return f(y, x); }; } + }; + + /** + * On: Apply a function to the results of another function + * @param {Function} f - Outer function + * @param {Function} g - Inner function + * @returns {Function} Function that applies f to the results of g + */ + scope.on = function(f, g) { + return function(x, y) { + return f(g(x), g(y)); + }; + }; + + /** + * Both: Check if both predicates are true + * @param {Function} f - First predicate + * @param {Function} g - Second predicate + * @returns {Function} Function that returns true if both predicates are true + */ + scope.both = function(f, g) { + return function(x) { + return f(x) && g(x); + }; + }; + + /** + * Either: Check if either predicate is true + * @param {Function} f - First predicate + * @param {Function} g - Second predicate + * @returns {Function} Function that returns true if either predicate is true + */ + scope.either = function(f, g) { + return function(x) { + return f(x) || g(x); + }; + }; +} - if (token.type === TokenType.FUNCTION_REF) { - current++; // Skip the @ token - if (tokens[current] && tokens[current].type === TokenType.IDENTIFIER) { - return { - type: 'FunctionReference', - name: tokens[current].value, - }; - } else { - throw new Error('Expected function name after @'); - } - } - - if (token.type === TokenType.IO_ASSERT) { - current++; - - // Parse the actual value (stop when we hit ==) - let actual; - if (tokens[current] && tokens[current].type === TokenType.IDENTIFIER) { - // This might be a function call or simple identifier - const name = tokens[current].value; - current++; - - // Check if there are arguments (numbers after the identifier) - const args = []; - while (current < tokens.length && tokens[current].type === TokenType.NUMBER) { - args.push({ type: 'NumberLiteral', value: tokens[current].value }); - current++; - } - - if (args.length > 0) { - actual = { type: 'FunctionCall', name, args }; - } else { - actual = { type: 'Identifier', value: name }; - } - } else if (tokens[current] && tokens[current].type === TokenType.NUMBER) { - actual = { type: 'NumberLiteral', value: tokens[current].value }; - current++; - } else if (tokens[current] && tokens[current].type === TokenType.STRING) { - actual = { type: 'StringLiteral', value: tokens[current].value }; - current++; - } else { - actual = walk(); - } - - // Expect an equals sign - if (tokens[current] && tokens[current].type === TokenType.EQUALS) { - current++; // Skip the equals sign - } else { - throw new Error('Expected == in assertion'); - } - - // Parse the expected value - let expected; - if (tokens[current] && tokens[current].type === TokenType.IDENTIFIER) { - expected = { type: 'Identifier', value: tokens[current].value }; - current++; - } else if (tokens[current] && tokens[current].type === TokenType.NUMBER) { - expected = { type: 'NumberLiteral', value: tokens[current].value }; - current++; - } else if (tokens[current] && tokens[current].type === TokenType.STRING) { - expected = { type: 'StringLiteral', value: tokens[current].value }; - current++; - } else { - expected = walk(); +/** + * Interpreter: Walks the AST and evaluates each node. + * + * @param {Object} ast - Abstract Syntax Tree to evaluate + * @returns {*} The result of evaluating the AST, or a Promise for async operations + * @throws {Error} For evaluation errors like division by zero, undefined variables, etc. + * + * @description Evaluates an AST by walking through each node and performing the + * corresponding operations. Manages scope, handles function calls, and supports + * both synchronous and asynchronous operations. + * + * The interpreter implements a combinator-based architecture where all operations + * are translated to function calls to standard library combinators. This eliminates + * parsing ambiguity while preserving the original syntax. The parser generates + * FunctionCall nodes for operators (e.g., x + y becomes add(x, y)), and the + * interpreter executes these calls using the combinator functions in the global scope. + * + * The interpreter uses a global scope for variable storage and function definitions. + * Each function call creates a new scope (using prototypal inheritance) to implement + * lexical scoping. Immutability is enforced by preventing reassignment in the + * global scope. + * + * The interpreter is split into three functions: evalNode (global), + * localEvalNodeWithScope (for function bodies), and localEvalNode (for internal + * recursion). This separation allows for correct scope handling and easier debugging. + * + * Recursive function support is implemented using a forward declaration pattern: + * a placeholder function is created in the global scope before evaluation, allowing + * the function body to reference itself during evaluation. + */ +function interpreter(ast) { + const globalScope = {}; + initializeStandardLibrary(globalScope); + + // Debug: Check if combinators are available + if (process.env.DEBUG) { + console.log('[DEBUG] Available functions in global scope:', Object.keys(globalScope)); + console.log('[DEBUG] add function exists:', typeof globalScope.add === 'function'); + console.log('[DEBUG] subtract function exists:', typeof globalScope.subtract === 'function'); + } + + // Reset call stack tracker at the start of interpretation + callStackTracker.reset(); + + /** + * Evaluates AST nodes in the global scope. + * + * @param {Object} node - AST node to evaluate + * @returns {*} The result of evaluating the node + * @throws {Error} For evaluation errors + * + * @description Main evaluation function that handles all node types in the + * global scope context. This function processes the core language constructs + * and delegates to combinator functions for all operations. + * + * The function implements the forward declaration pattern for recursive functions: + * when a function assignment is detected, a placeholder is created in the global + * scope before evaluation, allowing the function body to reference itself. + */ + function evalNode(node) { + callStackTracker.push('evalNode', node?.type || 'unknown'); + + try { + if (!node) { + return undefined; } - - return { - type: 'IOAssertExpression', - actual, - expected, - }; - } - - - - if (token.type === TokenType.PLUS) { - current++; - const left = walk(); - const right = walk(); - return { - type: 'PlusExpression', - left, - right, - }; - } - - if (token.type === TokenType.MINUS) { - current++; - const left = walk(); - const right = walk(); - return { - type: 'MinusExpression', - left, - right, - }; - } - - if (token.type === TokenType.MULTIPLY) { - current++; - const left = walk(); - const right = walk(); - return { - type: 'MultiplyExpression', - left, - right, - }; - } - - if (token.type === TokenType.DIVIDE) { - current++; - const left = walk(); - const right = walk(); - return { - type: 'DivideExpression', - left, - right, - }; - } - - if (token.type === TokenType.ASSIGNMENT) { - current++; // Skip the assignment token - return walk(); // Continue parsing - } - - if (token.type === TokenType.IDENTIFIER) { - // Check if this is followed by an assignment (variable or function) - if (tokens[current + 1] && tokens[current + 1].type === TokenType.ASSIGNMENT) { - const name = token.value; - - // Check if this is a function declaration (has parameters and arrow) - // Look ahead to see if there are parameters followed by arrow - let params = []; - let isFunction = false; - let tempCurrent = current + 2; // Skip identifier and assignment - - // Collect parameters until we hit an arrow - while (tempCurrent < tokens.length && tokens[tempCurrent].type === TokenType.IDENTIFIER) { - params.push(tokens[tempCurrent].value); - tempCurrent++; - } - - // Check if next token is arrow - if (tempCurrent < tokens.length && tokens[tempCurrent].type === TokenType.ARROW) { - isFunction = true; - } - - if (isFunction) { - // This is a function declaration - // Advance current to where tempCurrent left off - current = tempCurrent + 1; // Skip the arrow token + switch (node.type) { + case 'NumberLiteral': + return parseFloat(node.value); + case 'StringLiteral': + return node.value; + case 'BooleanLiteral': + return node.value; + case 'PlusExpression': + return evalNode(node.left) + evalNode(node.right); + case 'MinusExpression': + return evalNode(node.left) - evalNode(node.right); + case 'MultiplyExpression': + return evalNode(node.left) * evalNode(node.right); + case 'DivideExpression': + const divisor = evalNode(node.right); + if (divisor === 0) { + throw new Error('Division by zero'); + } + return evalNode(node.left) / evalNode(node.right); + case 'ModuloExpression': + return evalNode(node.left) % evalNode(node.right); + case 'PowerExpression': + return Math.pow(evalNode(node.left), evalNode(node.right)); + case 'EqualsExpression': + return evalNode(node.left) === evalNode(node.right); + case 'LessThanExpression': + return evalNode(node.left) < evalNode(node.right); + case 'GreaterThanExpression': + return evalNode(node.left) > evalNode(node.right); + case 'LessEqualExpression': + return evalNode(node.left) <= evalNode(node.right); + case 'GreaterEqualExpression': + return evalNode(node.left) >= evalNode(node.right); + case 'NotEqualExpression': + return evalNode(node.left) !== evalNode(node.right); + case 'AndExpression': + return !!(evalNode(node.left) && evalNode(node.right)); + case 'OrExpression': + return !!(evalNode(node.left) || evalNode(node.right)); + case 'XorExpression': + const leftVal = evalNode(node.left); + const rightVal = evalNode(node.right); + return !!((leftVal && !rightVal) || (!leftVal && rightVal)); + case 'NotExpression': + return !evalNode(node.operand); + case 'UnaryMinusExpression': + return -evalNode(node.operand); + case 'TableLiteral': + const table = {}; + let arrayIndex = 1; - // Check if the body is a case expression - if (tokens[current] && tokens[current].type === TokenType.CASE) { - current++; // Skip 'case' - - // Parse the value being matched (e.g., "x y") - const value = []; - while (current < tokens.length && - tokens[current].type !== TokenType.OF) { - if (tokens[current].type === TokenType.IDENTIFIER) { - value.push({ - type: 'Identifier', - value: tokens[current].value, - }); - } else if (tokens[current].type === TokenType.NUMBER) { - value.push({ - type: 'NumberLiteral', - value: tokens[current].value, - }); + for (const entry of node.entries) { + if (entry.key === null) { + // Array-like entry: {1, 2, 3} + table[arrayIndex] = evalNode(entry.value); + arrayIndex++; + } else { + // Key-value entry: {name: "Alice", age: 30} + let key; + if (entry.key.type === 'Identifier') { + // Convert identifier keys to strings + key = entry.key.value; + } else { + // For other key types (numbers, strings), evaluate normally + key = evalNode(entry.key); } - current++; + const value = evalNode(entry.value); + table[key] = value; } + } + + return table; + case 'TableAccess': + const tableValue = evalNode(node.table); + let keyValue; + + // Handle different key types + if (node.key.type === 'Identifier') { + // For dot notation, use the identifier name as the key + keyValue = node.key.value; + } else { + // For bracket notation, evaluate the key expression + keyValue = evalNode(node.key); + } + + if (typeof tableValue !== 'object' || tableValue === null) { + throw new Error('Cannot access property of non-table value'); + } + + if (tableValue[keyValue] === undefined) { + throw new Error(`Key '${keyValue}' not found in table`); + } + + return tableValue[keyValue]; + case 'AssignmentExpression': + // Prevent reassignment of standard library functions + if (globalScope.hasOwnProperty(node.name)) { + throw new Error(`Cannot reassign immutable variable: ${node.name}`); + } + + // Check if this is a function assignment for potential recursion + if (node.value.type === 'FunctionDefinition' || node.value.type === 'FunctionDeclaration') { + // Create a placeholder function that will be replaced + let placeholder = function(...args) { + // This should never be called, but if it is, it means we have a bug + throw new Error(`Function ${node.name} is not yet fully defined`); + }; - // Expect 'of' after the value - if (tokens[current] && tokens[current].type === TokenType.OF) { - current++; // Skip 'of' - } else { - throw new Error('Expected "of" after case value'); - } + // Store the placeholder in global scope + globalScope[node.name] = placeholder; - const cases = []; + // Now evaluate the function definition with access to the placeholder + const actualFunction = evalNode(node.value); - // Parse cases until we hit a semicolon or end - while (current < tokens.length) { - debugLog('Case parsing loop', { - current: tokens[current], - currentType: tokens[current]?.type - }); - // Parse pattern (e.g., "0 0" or "0 _" or "_ 0" or "_ _") - debugLog('Parsing pattern', { - current: tokens[current], - currentType: tokens[current]?.type - }); - const pattern = []; - while (current < tokens.length && - tokens[current].type !== TokenType.ASSIGNMENT && - tokens[current].type !== TokenType.SEMICOLON) { - if (tokens[current].type === TokenType.NUMBER) { - pattern.push({ - type: 'NumberLiteral', - value: tokens[current].value, - }); - } else if (tokens[current].type === TokenType.WILDCARD) { - pattern.push({ - type: 'WildcardPattern', - }); - } else if (tokens[current].type === TokenType.IDENTIFIER) { - pattern.push({ - type: 'Identifier', - value: tokens[current].value, - }); - } - current++; - } - - // Expect ':' after pattern - debugLog('Looking for : after pattern', { - current: tokens[current], - currentType: tokens[current]?.type - }); - if (tokens[current] && tokens[current].type === TokenType.ASSIGNMENT) { - current++; // Skip ':' - debugLog('Found : after pattern'); - } else { - throw new Error('Expected ":" after pattern'); - } - - // Parse result using walk() to handle complex expressions - debugLog('Starting case result parsing', { - current: tokens[current], - currentType: tokens[current]?.type - }); - const result = []; - - // Check if we're at the start of the next pattern - if ((tokens[current].type === TokenType.NUMBER || - tokens[current].type === TokenType.WILDCARD) && - tokens[current + 1] && tokens[current + 1].type === TokenType.ASSIGNMENT) { - debugLog('Found start of next pattern, stopping case result parsing'); - } else { - // Parse one expression for the case result - debugLog('Parsing case result node', { - current: tokens[current], - currentType: tokens[current]?.type - }); - const resultNode = walk(); - if (resultNode) { - result.push(resultNode); - debugLog('Added result node', resultNode); - } + // Replace the placeholder with the actual function + globalScope[node.name] = actualFunction; + return; + } + + const value = evalNode(node.value); + globalScope[node.name] = value; + return; + case 'Assignment': + // Prevent reassignment of standard library functions + if (globalScope.hasOwnProperty(node.identifier)) { + throw new Error(`Cannot reassign immutable variable: ${node.identifier}`); + } + + // Check if this is a function assignment for potential recursion + if (node.value.type === 'FunctionDefinition' || node.value.type === 'FunctionDeclaration') { + // Create a placeholder function that will be replaced + let placeholder = function(...args) { + // This should never be called, but if it is, it means we have a bug + throw new Error(`Function ${node.identifier} is not yet fully defined`); + }; + + // Store the placeholder in global scope + globalScope[node.identifier] = placeholder; + + // Now evaluate the function definition with access to the placeholder + const actualFunction = evalNode(node.value); + + // Replace the placeholder with the actual function + globalScope[node.identifier] = actualFunction; + return; + } + + const assignmentValue = evalNode(node.value); + globalScope[node.identifier] = assignmentValue; + return; + case 'Identifier': + const identifierValue = globalScope[node.value]; + if (identifierValue === undefined) { + throw new Error(`Variable ${node.value} is not defined`); + } + return identifierValue; + case 'FunctionDeclaration': + // For anonymous functions, the name comes from the assignment + // The function itself doesn't have a name, so we just return + // The assignment will handle storing it in the global scope + return function(...args) { + callStackTracker.push('FunctionCall', node.params.join(',')); + try { + let localScope = Object.create(globalScope); + for (let i = 0; i < node.params.length; i++) { + localScope[node.params[i]] = args[i]; } - - cases.push({ pattern, result }); - - // Skip the semicolon and break out of the case parsing loop - if (tokens[current] && tokens[current].type === TokenType.SEMICOLON) { - debugLog('Found semicolon, ending case parsing'); - current++; - break; // Exit the case parsing loop + return localEvalNodeWithScope(node.body, localScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionDefinition': + // Create a function from the function definition + return function(...args) { + callStackTracker.push('FunctionCall', node.parameters.join(',')); + try { + let localScope = Object.create(globalScope); + for (let i = 0; i < node.parameters.length; i++) { + localScope[node.parameters[i]] = args[i]; } + return localEvalNodeWithScope(node.body, localScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionCall': + let funcToCall; + if (typeof node.name === 'string') { + // Regular function call with string name + funcToCall = globalScope[node.name]; + if (process.env.DEBUG) { + console.log(`[DEBUG] FunctionCall: looking up function '${node.name}' in globalScope, found:`, typeof funcToCall); + } + } else if (node.name.type === 'Identifier') { + // Function call with identifier + funcToCall = globalScope[node.name.value]; + if (process.env.DEBUG) { + console.log(`[DEBUG] FunctionCall: looking up function '${node.name.value}' in globalScope, found:`, typeof funcToCall); + } + } else { + // Function call from expression (e.g., parenthesized function, higher-order) + funcToCall = evalNode(node.name); + if (process.env.DEBUG) { + console.log(`[DEBUG] FunctionCall: evaluated function expression, found:`, typeof funcToCall); + } + } + + if (funcToCall instanceof Function) { + let args = node.args.map(evalNode); + if (process.env.DEBUG) { + console.log(`[DEBUG] FunctionCall: calling function with args:`, args); } + return funcToCall(...args); + } + throw new Error(`Function is not defined or is not callable`); + case 'WhenExpression': + // Handle both single values and arrays of values + const whenValues = Array.isArray(node.value) + ? node.value.map(evalNode) + : [evalNode(node.value)]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: whenValues =`, whenValues); + } + + for (const caseItem of node.cases) { + // Handle both single patterns and arrays of patterns + const patterns = caseItem.pattern.map(evalNode); - const body = { - type: 'CaseExpression', - value, - cases, - }; + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: patterns =`, patterns); + } - return { - type: 'FunctionDeclaration', - name, - params, - body, - }; - } else { - // Parse function body directly to avoid function call detection issues - let body; - if (tokens[current] && ( - tokens[current].type === TokenType.PLUS || - tokens[current].type === TokenType.MINUS || - tokens[current].type === TokenType.MULTIPLY || - tokens[current].type === TokenType.DIVIDE - )) { - // Arithmetic expression - const operator = tokens[current].type; - current++; // Skip operator - const left = walk(); - const right = walk(); - - const expressionTypes = { - [TokenType.PLUS]: 'PlusExpression', - [TokenType.MINUS]: 'MinusExpression', - [TokenType.MULTIPLY]: 'MultiplyExpression', - [TokenType.DIVIDE]: 'DivideExpression', - }; - - body = { - type: expressionTypes[operator], - left, - right, - }; + // Check if patterns match the values + let matches = true; + if (whenValues.length !== patterns.length) { + matches = false; } else { - // Fallback to walk() for other cases - body = walk(); + for (let i = 0; i < whenValues.length; i++) { + const value = whenValues[i]; + const pattern = patterns[i]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: comparing value ${value} with pattern ${pattern}`); + } + + if (pattern === true) { // Wildcard pattern + // Wildcard always matches + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: wildcard matches`); + } + continue; + } else if (value !== pattern) { + matches = false; + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: pattern does not match`); + } + break; + } else { + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: pattern matches`); + } + } + } } - return { - type: 'FunctionDeclaration', - name, - params, - body, - }; + if (process.env.DEBUG) { + console.log(`[DEBUG] WhenExpression: case matches = ${matches}`); + } + + if (matches) { + const results = caseItem.result.map(evalNode); + if (results.length === 1) { + return results[0]; + } + return results.join(' '); + } } - } else { - // This is a variable assignment - // Advance current to skip identifier and assignment token - current += 2; // Skip identifier and assignment + throw new Error('No matching pattern found'); + case 'WildcardPattern': + return true; + case 'IOInExpression': + const readline = require('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); - debugLog('Assignment parsing', { - current: tokens[current], - next: tokens[current + 1], - currentType: tokens[current]?.type, - nextType: tokens[current + 1]?.type + return new Promise((resolve) => { + rl.question('', (input) => { + rl.close(); + const num = parseInt(input); + resolve(isNaN(num) ? input : num); + }); }); + case 'IOOutExpression': + const outputValue = evalNode(node.value); + console.log(outputValue); + return outputValue; + case 'IOAssertExpression': + const assertionValue = evalNode(node.value); + if (!assertionValue) { + throw new Error('Assertion failed'); + } + return assertionValue; + case 'FunctionReference': + const functionValue = globalScope[node.name]; + if (functionValue === undefined) { + throw new Error(`Function ${node.name} is not defined`); + } + if (typeof functionValue !== 'function') { + throw new Error(`${node.name} is not a function`); + } + return functionValue; + case 'ArrowExpression': + // Arrow expressions are function bodies that should be evaluated + return evalNode(node.body); + default: + throw new Error(`Unknown node type: ${node.type}`); + } + } finally { + callStackTracker.pop(); + } + } + + /** + * Evaluates AST nodes in a local scope with access to parent scope. + * + * @param {Object} node - AST node to evaluate + * @param {Object} scope - Local scope object (prototypally inherits from global) + * @returns {*} The result of evaluating the node + * @throws {Error} For evaluation errors + * + * @description Used for evaluating function bodies and other expressions + * that need access to both local and global variables. This function implements + * lexical scoping by creating a local scope that prototypally inherits from + * the global scope, allowing access to both local parameters and global functions. + * + * The function handles the same node types as evalNode but uses the local scope + * for variable lookups. It also implements the forward declaration pattern for + * recursive functions, ensuring that function definitions can reference themselves + * during evaluation. + * + * This separation of global and local evaluation allows for proper scope management + * and prevents variable name conflicts between function parameters and global variables. + */ + const localEvalNodeWithScope = (node, scope) => { + callStackTracker.push('localEvalNodeWithScope', node?.type || 'unknown'); + + try { + if (!node) { + return undefined; + } + switch (node.type) { + case 'NumberLiteral': + return parseFloat(node.value); + case 'StringLiteral': + return node.value; + case 'BooleanLiteral': + return node.value; + case 'PlusExpression': + return localEvalNodeWithScope(node.left, scope) + localEvalNodeWithScope(node.right, scope); + case 'MinusExpression': + return localEvalNodeWithScope(node.left, scope) - localEvalNodeWithScope(node.right, scope); + case 'MultiplyExpression': + return localEvalNodeWithScope(node.left, scope) * localEvalNodeWithScope(node.right, scope); + case 'DivideExpression': + const divisor = localEvalNodeWithScope(node.right, scope); + if (divisor === 0) { + throw new Error('Division by zero'); + } + return localEvalNodeWithScope(node.left, scope) / localEvalNodeWithScope(node.right, scope); + case 'ModuloExpression': + return localEvalNodeWithScope(node.left, scope) % localEvalNodeWithScope(node.right, scope); + case 'PowerExpression': + return Math.pow(localEvalNodeWithScope(node.left, scope), localEvalNodeWithScope(node.right, scope)); + case 'EqualsExpression': + return localEvalNodeWithScope(node.left, scope) === localEvalNodeWithScope(node.right, scope); + case 'LessThanExpression': + return localEvalNodeWithScope(node.left, scope) < localEvalNodeWithScope(node.right, scope); + case 'GreaterThanExpression': + return localEvalNodeWithScope(node.left, scope) > localEvalNodeWithScope(node.right, scope); + case 'LessEqualExpression': + return localEvalNodeWithScope(node.left, scope) <= localEvalNodeWithScope(node.right, scope); + case 'GreaterEqualExpression': + return localEvalNodeWithScope(node.left, scope) >= localEvalNodeWithScope(node.right, scope); + case 'NotEqualExpression': + return localEvalNodeWithScope(node.left, scope) !== localEvalNodeWithScope(node.right, scope); + case 'AndExpression': + return !!(localEvalNodeWithScope(node.left, scope) && localEvalNodeWithScope(node.right, scope)); + case 'OrExpression': + return !!(localEvalNodeWithScope(node.left, scope) || localEvalNodeWithScope(node.right, scope)); + case 'XorExpression': + const leftVal = localEvalNodeWithScope(node.left, scope); + const rightVal = localEvalNodeWithScope(node.right, scope); + return !!((leftVal && !rightVal) || (!leftVal && rightVal)); + case 'NotExpression': + return !localEvalNodeWithScope(node.operand, scope); + case 'UnaryMinusExpression': + return -localEvalNodeWithScope(node.operand, scope); + case 'TableLiteral': + const table = {}; + let arrayIndex = 1; + + for (const entry of node.entries) { + if (entry.key === null) { + // Array-like entry: {1, 2, 3} + table[arrayIndex] = localEvalNodeWithScope(entry.value, scope); + arrayIndex++; + } else { + // Key-value entry: {name: "Alice", age: 30} + let key; + if (entry.key.type === 'Identifier') { + // Convert identifier keys to strings + key = entry.key.value; + } else { + // For other key types (numbers, strings), evaluate normally + key = localEvalNodeWithScope(entry.key, scope); + } + const value = localEvalNodeWithScope(entry.value, scope); + table[key] = value; + } + } + + return table; + case 'TableAccess': + const tableValue = localEvalNodeWithScope(node.table, scope); + let keyValue; - // Parse the value directly without calling walk() - let value; + // Handle different key types + if (node.key.type === 'Identifier') { + // For dot notation, use the identifier name as the key + keyValue = node.key.value; + } else { + // For bracket notation, evaluate the key expression + keyValue = localEvalNodeWithScope(node.key, scope); + } - // Check if the value is a function call - if (tokens[current] && tokens[current].type === TokenType.IDENTIFIER && - tokens[current + 1] && tokens[current + 1].type !== TokenType.ASSIGNMENT && - tokens[current + 1].type !== TokenType.SEMICOLON && - tokens[current + 1].type !== TokenType.ARROW && - (tokens[current + 1].type === TokenType.NUMBER || - tokens[current + 1].type === TokenType.IDENTIFIER || - tokens[current + 1].type === TokenType.FUNCTION_REF)) { - // This is a function call as the value - const funcName = tokens[current].value; - current++; // Skip function name - const args = []; + if (typeof tableValue !== 'object' || tableValue === null) { + throw new Error('Cannot access property of non-table value'); + } + + if (tableValue[keyValue] === undefined) { + throw new Error(`Key '${keyValue}' not found in table`); + } + + return tableValue[keyValue]; + case 'AssignmentExpression': + // Prevent reassignment of standard library functions + if (globalScope.hasOwnProperty(node.name)) { + throw new Error(`Cannot reassign immutable variable: ${node.name}`); + } + + // Check if this is a function assignment for potential recursion + if (node.value.type === 'FunctionDefinition' || node.value.type === 'FunctionDeclaration') { + // Create a placeholder function that will be replaced + let placeholder = function(...args) { + // This should never be called, but if it is, it means we have a bug + throw new Error(`Function ${node.name} is not yet fully defined`); + }; - // Collect arguments until we hit a semicolon or end - while (current < tokens.length && tokens[current].type !== TokenType.SEMICOLON) { - // Handle function references (@functionName) - if (tokens[current] && tokens[current].type === TokenType.FUNCTION_REF) { - current++; // Skip @ - if (tokens[current] && tokens[current].type === TokenType.IDENTIFIER) { - args.push({ - type: 'FunctionReference', - name: tokens[current].value, - }); - current++; - } else { - throw new Error('Expected function name after @'); - } - } else { - // Use walk() to parse complex arguments (including arithmetic expressions) - const arg = walk(); - if (arg) { - args.push(arg); - } + // Store the placeholder in global scope + globalScope[node.name] = placeholder; + + // Now evaluate the function definition with access to the placeholder + const actualFunction = localEvalNodeWithScope(node.value, scope); + + // Replace the placeholder with the actual function + globalScope[node.name] = actualFunction; + return; + } + + globalScope[node.name] = localEvalNodeWithScope(node.value, scope); + return; + case 'Identifier': + // First check local scope, then global scope + if (scope && scope.hasOwnProperty(node.value)) { + return scope[node.value]; + } + const identifierValue = globalScope[node.value]; + if (identifierValue === undefined && node.value) { + return node.value; + } + return identifierValue; + case 'FunctionDeclaration': + // For anonymous functions, the name comes from the assignment + // The function itself doesn't have a name, so we just return + // The assignment will handle storing it in the global scope + return function(...args) { + callStackTracker.push('FunctionCall', node.params.join(',')); + try { + let nestedScope = Object.create(globalScope); + for (let i = 0; i < node.params.length; i++) { + nestedScope[node.params[i]] = args[i]; } + return localEvalNodeWithScope(node.body, nestedScope); + } finally { + callStackTracker.pop(); } + }; + case 'FunctionDefinition': + // Create a function from the function definition + return function(...args) { + callStackTracker.push('FunctionCall', node.parameters.join(',')); + try { + let nestedScope = Object.create(globalScope); + for (let i = 0; i < node.parameters.length; i++) { + nestedScope[node.parameters[i]] = args[i]; + } + return localEvalNodeWithScope(node.body, nestedScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionCall': + let localFunc; + if (typeof node.name === 'string') { + // Regular function call with string name + localFunc = globalScope[node.name]; + } else if (node.name.type === 'Identifier') { + // Function call with identifier + localFunc = globalScope[node.name.value]; + } else { + // Function call from expression (e.g., parenthesized function, higher-order) + localFunc = localEvalNodeWithScope(node.name, scope); + } + + if (localFunc instanceof Function) { + let args = node.args.map(arg => localEvalNodeWithScope(arg, scope)); + return localFunc(...args); + } + throw new Error(`Function is not defined or is not callable`); + case 'WhenExpression': + // Handle both single values and arrays of values + const whenValues = Array.isArray(node.value) + ? node.value.map(val => localEvalNodeWithScope(val, scope)) + : [localEvalNodeWithScope(node.value, scope)]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: whenValues =`, whenValues); + } + + for (const caseItem of node.cases) { + // Handle both single patterns and arrays of patterns + const patterns = caseItem.pattern.map(pat => localEvalNodeWithScope(pat, scope)); - value = { - type: 'FunctionCall', - name: funcName, - args, - }; + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: patterns =`, patterns); + } - debugLog('Function call parsed in assignment', { name: funcName, args }); - } else if (tokens[current] && tokens[current].type === TokenType.NUMBER) { - // Simple number value - value = { - type: 'NumberLiteral', - value: tokens[current].value, - }; - current++; - } else if (tokens[current] && tokens[current].type === TokenType.STRING) { - // Simple string value - value = { - type: 'StringLiteral', - value: tokens[current].value, - }; - current++; - } else if (tokens[current] && tokens[current].type === TokenType.IDENTIFIER) { - // Check if this is the start of an infix arithmetic expression - if (tokens[current + 1] && ( - tokens[current + 1].type === TokenType.PLUS || - tokens[current + 1].type === TokenType.MINUS || - tokens[current + 1].type === TokenType.MULTIPLY || - tokens[current + 1].type === TokenType.DIVIDE - )) { - // This is an infix arithmetic expression - const left = { - type: 'Identifier', - value: tokens[current].value, - }; - current++; // Skip left operand - const operator = tokens[current].type; - current++; // Skip operator - const right = walk(); - - const expressionTypes = { - [TokenType.PLUS]: 'PlusExpression', - [TokenType.MINUS]: 'MinusExpression', - [TokenType.MULTIPLY]: 'MultiplyExpression', - [TokenType.DIVIDE]: 'DivideExpression', - }; - - value = { - type: expressionTypes[operator], - left, - right, - }; + // Check if patterns match the values + let matches = true; + if (whenValues.length !== patterns.length) { + matches = false; } else { - // Simple identifier value - value = { - type: 'Identifier', - value: tokens[current].value, - }; - current++; + for (let i = 0; i < whenValues.length; i++) { + const value = whenValues[i]; + const pattern = patterns[i]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: comparing value ${value} with pattern ${pattern}`); + } + + if (pattern === true) { // Wildcard pattern + // Wildcard always matches + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: wildcard matches`); + } + continue; + } else if (value !== pattern) { + matches = false; + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: pattern does not match`); + } + break; + } else { + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: pattern matches`); + } + } + } } - } else if (tokens[current] && ( - tokens[current].type === TokenType.PLUS || - tokens[current].type === TokenType.MINUS || - tokens[current].type === TokenType.MULTIPLY || - tokens[current].type === TokenType.DIVIDE - )) { - // Arithmetic expression value (prefix notation) - const operator = tokens[current].type; - current++; // Skip operator - const left = walk(); - const right = walk(); - const expressionTypes = { - [TokenType.PLUS]: 'PlusExpression', - [TokenType.MINUS]: 'MinusExpression', - [TokenType.MULTIPLY]: 'MultiplyExpression', - [TokenType.DIVIDE]: 'DivideExpression', - }; + if (process.env.DEBUG) { + console.log(`[DEBUG] localEvalNodeWithScope WhenExpression: case matches = ${matches}`); + } - value = { - type: expressionTypes[operator], - left, - right, - }; - } else { - // Fallback to walk() for other cases - value = walk(); + if (matches) { + const results = caseItem.result.map(res => localEvalNodeWithScope(res, scope)); + if (results.length === 1) { + return results[0]; + } + return results.join(' '); + } } + throw new Error('No matching pattern found'); + case 'WildcardPattern': + return true; + case 'IOInExpression': + const readline = require('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); - return { - type: 'AssignmentExpression', - name, - value, - }; - } - } - - // Check if this is a function call (identifier followed by arguments, but not operators) - if (tokens[current + 1] && - tokens[current + 1].type !== TokenType.ASSIGNMENT && - tokens[current + 1].type !== TokenType.PLUS && - tokens[current + 1].type !== TokenType.MINUS && - tokens[current + 1].type !== TokenType.MULTIPLY && - tokens[current + 1].type !== TokenType.DIVIDE && - tokens[current + 1].type !== TokenType.SEMICOLON && - (tokens[current + 1].type === TokenType.NUMBER || - tokens[current + 1].type === TokenType.IDENTIFIER)) { - // This is a function call - const funcName = token.value; - current++; // Skip function name - const args = []; - - // Collect arguments until we hit a semicolon or end - while (current < tokens.length && tokens[current].type !== TokenType.SEMICOLON) { - // Use walk() to parse complex arguments (including arithmetic expressions) - const arg = walk(); - if (arg) { - args.push(arg); + return new Promise((resolve) => { + rl.question('', (input) => { + rl.close(); + const num = parseInt(input); + resolve(isNaN(num) ? input : num); + }); + }); + case 'IOOutExpression': + const localOutputValue = localEvalNodeWithScope(node.value, scope); + console.log(localOutputValue); + return localOutputValue; + case 'IOAssertExpression': + const localAssertionValue = localEvalNodeWithScope(node.value, scope); + if (!localAssertionValue) { + throw new Error('Assertion failed'); } - } - - return { - type: 'FunctionCall', - name: funcName, - args, - }; - } - - // Check if this is followed by an operator - if (tokens[current + 1] && ( - tokens[current + 1].type === TokenType.PLUS || - tokens[current + 1].type === TokenType.MINUS || - tokens[current + 1].type === TokenType.MULTIPLY || - tokens[current + 1].type === TokenType.DIVIDE - )) { - const left = { - type: 'Identifier', - value: token.value, - }; - const operator = tokens[current + 1].type; - current += 2; // Skip identifier and operator - const right = walk(); - - const expressionTypes = { - [TokenType.PLUS]: 'PlusExpression', - [TokenType.MINUS]: 'MinusExpression', - [TokenType.MULTIPLY]: 'MultiplyExpression', - [TokenType.DIVIDE]: 'DivideExpression', - }; - - return { - type: expressionTypes[operator], - left, - right, - }; - } - - // Check if this is followed by an operator - if (tokens[current + 1] && ( - tokens[current + 1].type === TokenType.PLUS || - tokens[current + 1].type === TokenType.MINUS || - tokens[current + 1].type === TokenType.MULTIPLY || - tokens[current + 1].type === TokenType.DIVIDE - )) { - const left = { - type: 'Identifier', - value: token.value, - }; - const operator = tokens[current + 1].type; - current += 2; // Skip identifier and operator - const right = walk(); - - const expressionTypes = { - [TokenType.PLUS]: 'PlusExpression', - [TokenType.MINUS]: 'MinusExpression', - [TokenType.MULTIPLY]: 'MultiplyExpression', - [TokenType.DIVIDE]: 'DivideExpression', - }; - - return { - type: expressionTypes[operator], - left, - right, - }; - } - - current++; - return { - type: 'Identifier', - value: token.value, - }; - } - - - - // Pattern matching: value : pattern1 : result1 pattern2 : result2 ... - if (token.type === TokenType.CASE) { - current++; // Skip 'case' - - // Parse the value being matched - const value = walk(); - - // Expect 'of' - if (tokens[current].type !== TokenType.OF) { - throw new Error('Expected "of" after "case"'); - } - current++; // Skip 'of' - - const cases = []; - - // Parse cases until we hit a semicolon or end - while (current < tokens.length && tokens[current].type !== TokenType.SEMICOLON) { - const pattern = walk(); - const result = walk(); - cases.push({ pattern, result }); - } - - return { - type: 'CaseExpression', - value, - cases, - }; - } - - if (token.type === TokenType.IF) { - current++; - let node = { - type: 'IfExpression', - test: walk(), - consequent: walk(), - alternate: tokens[current].type === TokenType.ELSE ? (current++, walk()) : null, - }; - return node; - } - - if (token.type === TokenType.FUNCTION) { - current++; - let node = { - type: 'FunctionDeclaration', - name: tokens[current++].value, - params: [], - body: [], - }; - while (tokens[current].type !== TokenType.RIGHT_PAREN) { - node.params.push(tokens[current++].value); - } - current++; // Skip right paren - while (tokens[current].type !== TokenType.RIGHT_BRACE) { - node.body.push(walk()); - } - current++; // Skip right brace - return node; - } - - if (token.type === TokenType.IDENTIFIER && tokens[current + 1].type === TokenType.LEFT_PAREN) { - current++; - let node = { - type: 'FunctionCall', - name: token.value, - args: [], - }; - current++; // Skip left paren - while (tokens[current].type !== TokenType.RIGHT_PAREN) { - node.args.push(walk()); + return localAssertionValue; + case 'FunctionReference': + const localFunctionValue = globalScope[node.name]; + if (localFunctionValue === undefined) { + throw new Error(`Function ${node.name} is not defined`); + } + if (typeof localFunctionValue !== 'function') { + throw new Error(`${node.name} is not a function`); + } + return localFunctionValue; + case 'ArrowExpression': + // Arrow expressions are function bodies that should be evaluated + return localEvalNodeWithScope(node.body, scope); + default: + throw new Error(`Unknown node type: ${node.type}`); } - current++; // Skip right paren - return node; - } - - if (token.type === TokenType.SEMICOLON) { - current++; - return null; + } finally { + callStackTracker.pop(); } - - throw new TypeError(token.type); - } - - let ast = { - type: 'Program', - body: [], }; - while (current < tokens.length) { - const node = walk(); - if (node !== null && node !== undefined) { - ast.body.push(node); - } - } - - return ast; -} - -// Interpreter -function interpreter(ast) { - debugLog('Starting interpreter with AST', ast); - let globalScope = {}; - - function evalNode(node) { - if (!node) { - return undefined; - } - switch (node.type) { - case 'NumberLiteral': - return parseInt(node.value); - case 'StringLiteral': - return node.value; - case 'PlusExpression': - return evalNode(node.left) + evalNode(node.right); - case 'MinusExpression': - return evalNode(node.left) - evalNode(node.right); - case 'MultiplyExpression': - return evalNode(node.left) * evalNode(node.right); - case 'DivideExpression': - const divisor = evalNode(node.right); - if (divisor === 0) { - throw new Error('Division by zero'); - } - return evalNode(node.left) / evalNode(node.right); - case 'AssignmentExpression': - if (globalScope.hasOwnProperty(node.name)) { - throw new Error(`Cannot reassign immutable variable: ${node.name}`); - } - const value = evalNode(node.value); - globalScope[node.name] = value; - return; - case 'Identifier': - const identifierValue = globalScope[node.value]; - if (identifierValue === undefined) { - throw new Error(`Variable ${node.value} is not defined`); - } - return identifierValue; - case 'FunctionReference': - const functionValue = globalScope[node.name]; - if (functionValue === undefined) { - throw new Error(`Function ${node.name} is not defined`); - } - if (typeof functionValue !== 'function') { - throw new Error(`${node.name} is not a function`); - } - return functionValue; - case 'IfExpression': - return evalNode(node.test) ? evalNode(node.consequent) : node.alternate ? evalNode(node.alternate) : undefined; - case 'FunctionDeclaration': - if (globalScope.hasOwnProperty(node.name)) { - throw new Error(`Cannot reassign immutable variable: ${node.name}`); - } - globalScope[node.name] = function(...args) { - let localScope = Object.create(globalScope); - for (let i = 0; i < node.params.length; i++) { - localScope[node.params[i]] = args[i]; + /** + * Evaluates AST nodes in the global scope (internal recursion helper). + * + * @param {Object} node - AST node to evaluate + * @returns {*} The result of evaluating the node + * @throws {Error} For evaluation errors + * + * @description Internal helper function for recursive evaluation that + * always uses the global scope. This function is used to avoid circular + * dependencies and infinite recursion when evaluating nested expressions + * that need access to the global scope. + * + * This function duplicates the logic of evalNode but without the scope + * parameter, ensuring that all variable lookups go through the global scope. + * It's primarily used for evaluating function bodies and other expressions + * that need to be isolated from local scope contexts. + * + * The function also implements the forward declaration pattern for recursive + * functions, maintaining consistency with the other evaluation functions. + */ + const localEvalNode = (node) => { + callStackTracker.push('localEvalNode', node?.type || 'unknown'); + + try { + if (!node) { + return undefined; + } + switch (node.type) { + case 'NumberLiteral': + return parseFloat(node.value); + case 'StringLiteral': + return node.value; + case 'BooleanLiteral': + return node.value; + case 'PlusExpression': + return localEvalNode(node.left) + localEvalNode(node.right); + case 'MinusExpression': + return localEvalNode(node.left) - localEvalNode(node.right); + case 'MultiplyExpression': + return localEvalNode(node.left) * localEvalNode(node.right); + case 'DivideExpression': + const divisor = localEvalNode(node.right); + if (divisor === 0) { + throw new Error('Division by zero'); } - // Create a new evalNode function that uses localScope - const localEvalNode = (node) => { - if (!node) { - return undefined; + return localEvalNode(node.left) / localEvalNode(node.right); + case 'ModuloExpression': + return localEvalNode(node.left) % localEvalNode(node.right); + case 'PowerExpression': + return Math.pow(localEvalNode(node.left), localEvalNode(node.right)); + case 'EqualsExpression': + return localEvalNode(node.left) === localEvalNode(node.right); + case 'LessThanExpression': + return localEvalNode(node.left) < localEvalNode(node.right); + case 'GreaterThanExpression': + return localEvalNode(node.left) > localEvalNode(node.right); + case 'LessEqualExpression': + return localEvalNode(node.left) <= localEvalNode(node.right); + case 'GreaterEqualExpression': + return localEvalNode(node.left) >= localEvalNode(node.right); + case 'NotEqualExpression': + return localEvalNode(node.left) !== localEvalNode(node.right); + case 'AndExpression': + return !!(localEvalNode(node.left) && localEvalNode(node.right)); + case 'OrExpression': + return !!(localEvalNode(node.left) || localEvalNode(node.right)); + case 'XorExpression': + const leftVal = localEvalNode(node.left); + const rightVal = localEvalNode(node.right); + return !!((leftVal && !rightVal) || (!leftVal && rightVal)); + case 'NotExpression': + return !localEvalNode(node.operand); + case 'UnaryMinusExpression': + return -localEvalNode(node.operand); + case 'TableLiteral': + const table = {}; + let arrayIndex = 1; + + for (const entry of node.entries) { + if (entry.key === null) { + // Array-like entry: {1, 2, 3} + table[arrayIndex] = localEvalNode(entry.value); + arrayIndex++; + } else { + // Key-value entry: {name: "Alice", age: 30} + let key; + if (entry.key.type === 'Identifier') { + // Convert identifier keys to strings + key = entry.key.value; + } else { + // For other key types (numbers, strings), evaluate normally + key = localEvalNode(entry.key); + } + const value = localEvalNode(entry.value); + table[key] = value; } - switch (node.type) { - case 'NumberLiteral': - return parseInt(node.value); - case 'StringLiteral': - return node.value; - case 'PlusExpression': - return localEvalNode(node.left) + localEvalNode(node.right); - case 'MinusExpression': - return localEvalNode(node.left) - localEvalNode(node.right); - case 'MultiplyExpression': - return localEvalNode(node.left) * localEvalNode(node.right); - case 'DivideExpression': - const divisor = localEvalNode(node.right); - if (divisor === 0) { - throw new Error('Division by zero'); - } - return localEvalNode(node.left) / localEvalNode(node.right); - case 'AssignmentExpression': - if (localScope.hasOwnProperty(node.name)) { - throw new Error(`Cannot reassign immutable variable: ${node.name}`); - } - localScope[node.name] = localEvalNode(node.value); - return; - case 'Identifier': - const identifierValue = localScope[node.value]; - if (identifierValue === undefined && node.value) { - return node.value; // Return as string literal if not found in scope - } - return identifierValue; - case 'FunctionReference': - const localFunctionValue = localScope[node.name]; - if (localFunctionValue === undefined) { - throw new Error(`Function ${node.name} is not defined`); - } - if (typeof localFunctionValue !== 'function') { - throw new Error(`${node.name} is not a function`); - } - return localFunctionValue; - case 'IfExpression': - return localEvalNode(node.test) ? localEvalNode(node.consequent) : node.alternate ? localEvalNode(node.alternate) : undefined; - case 'FunctionDeclaration': - if (localScope.hasOwnProperty(node.name)) { - throw new Error(`Cannot reassign immutable variable: ${node.name}`); - } - localScope[node.name] = function(...args) { - let nestedScope = Object.create(localScope); - for (let i = 0; i < node.params.length; i++) { - nestedScope[node.params[i]] = args[i]; - } - return localEvalNode(node.body); - }; - return; - case 'FunctionCall': - if (localScope[node.name] instanceof Function) { - let args = node.args.map(localEvalNode); - return localScope[node.name](...args); - } - throw new Error(`Function ${node.name} is not defined`); - case 'CaseExpression': - // Evaluate the values being matched (e.g., [x, y]) - const values = node.value.map(localEvalNode); - - for (const caseItem of node.cases) { - // Evaluate the pattern (e.g., [0, 0] or [0, _]) - const pattern = caseItem.pattern.map(localEvalNode); + } + + return table; + case 'TableAccess': + const tableValue = localEvalNode(node.table); + let keyValue; + + // Handle different key types + if (node.key.type === 'Identifier') { + // For dot notation, use the identifier name as the key + keyValue = node.key.value; + } else { + // For bracket notation, evaluate the key expression + keyValue = localEvalNode(node.key); + } + + if (typeof tableValue !== 'object' || tableValue === null) { + throw new Error('Cannot access property of non-table value'); + } + + if (tableValue[keyValue] === undefined) { + throw new Error(`Key '${keyValue}' not found in table`); + } + + return tableValue[keyValue]; + case 'AssignmentExpression': + // Prevent reassignment of standard library functions + if (globalScope.hasOwnProperty(node.name)) { + throw new Error(`Cannot reassign immutable variable: ${node.name}`); + } - // Check if pattern matches values - let matches = true; - for (let i = 0; i < Math.max(values.length, pattern.length); i++) { - const value = values[i]; - const patternValue = pattern[i]; + // Check if this is a function assignment for potential recursion + if (node.value.type === 'FunctionDefinition' || node.value.type === 'FunctionDeclaration') { + // Create a placeholder function that will be replaced + let placeholder = function(...args) { + // This should never be called, but if it is, it means we have a bug + throw new Error(`Function ${node.name} is not yet fully defined`); + }; - // Wildcard always matches - if (patternValue === true) continue; + // Store the placeholder in global scope + globalScope[node.name] = placeholder; - // Otherwise, values must be equal - if (value !== patternValue) { - matches = false; - break; - } + // Now evaluate the function definition with access to the placeholder + const actualFunction = localEvalNode(node.value); + + // Replace the placeholder with the actual function + globalScope[node.name] = actualFunction; + return; } - if (matches) { - // Evaluate all results - const results = caseItem.result.map(localEvalNode); - // If there's only one result, return it directly (preserves number type) - if (results.length === 1) { - return results[0]; - } - // Otherwise join multiple results as string - return results.join(' '); + globalScope[node.name] = localEvalNode(node.value); + return; + case 'Identifier': + const identifierValue = globalScope[node.value]; + if (identifierValue === undefined && node.value) { + return node.value; } - } - throw new Error('No matching pattern found'); - case 'WildcardPattern': - return true; // Wildcard always matches - case 'IOInExpression': - // Read from stdin - const readline = require('readline'); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout - }); - - return new Promise((resolve) => { - rl.question('', (input) => { - rl.close(); - const num = parseInt(input); - resolve(isNaN(num) ? input : num); - }); - }); - case 'IOOutExpression': - // Output to stdout - const localOutputValue = localEvalNode(node.value); - console.log(localOutputValue); - return localOutputValue; - case 'IOAssertExpression': - // Assert that actual equals expected - const localActualValue = localEvalNode(node.actual); - const localExpectedValue = localEvalNode(node.expected); - if (localActualValue !== localExpectedValue) { - throw new Error(`Assertion failed: expected ${JSON.stringify(localExpectedValue)}, got ${JSON.stringify(localActualValue)}`); + return identifierValue; + case 'FunctionDeclaration': + // For anonymous functions, the name comes from the assignment + // The function itself doesn't have a name, so we just return + // The assignment will handle storing it in the global scope + return function(...args) { + callStackTracker.push('FunctionCall', node.params.join(',')); + try { + let nestedScope = Object.create(globalScope); + for (let i = 0; i < node.params.length; i++) { + nestedScope[node.params[i]] = args[i]; } - return localActualValue; - default: - throw new Error(`Unknown node type: ${node.type}`); + return localEvalNodeWithScope(node.body, nestedScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionDefinition': + // Create a function from the function definition + return function(...args) { + callStackTracker.push('FunctionCall', node.parameters.join(',')); + try { + let nestedScope = Object.create(globalScope); + for (let i = 0; i < node.parameters.length; i++) { + nestedScope[node.parameters[i]] = args[i]; + } + return localEvalNodeWithScope(node.body, nestedScope); + } finally { + callStackTracker.pop(); + } + }; + case 'FunctionCall': + let localFunc; + if (typeof node.name === 'string') { + // Regular function call with string name + localFunc = globalScope[node.name]; + } else if (node.name.type === 'Identifier') { + // Function call with identifier + localFunc = globalScope[node.name.value]; + } else { + // Function call from expression (e.g., parenthesized function, higher-order) + localFunc = localEvalNode(node.name); } - }; - return localEvalNode(node.body); - }; - return; - case 'FunctionCall': - if (globalScope[node.name] instanceof Function) { - let args = node.args.map(evalNode); - return globalScope[node.name](...args); - } - throw new Error(`Function ${node.name} is not defined`); - case 'CaseExpression': - debugLog('CaseExpression evaluation', { value: node.value, cases: node.cases }); - // Evaluate the values being matched (e.g., [x, y]) - const values = node.value.map(evalNode); - - for (const caseItem of node.cases) { - // Evaluate the pattern (e.g., [0, 0] or [0, _]) - const pattern = caseItem.pattern.map(evalNode); - // Check if pattern matches values - let matches = true; - for (let i = 0; i < Math.max(values.length, pattern.length); i++) { - const value = values[i]; - const patternValue = pattern[i]; - - // Wildcard always matches - if (patternValue === true) continue; + if (localFunc instanceof Function) { + let args = node.args.map(localEvalNode); + return localFunc(...args); + } + throw new Error(`Function is not defined or is not callable`); + case 'WhenExpression': + // Handle both single values and arrays of values + const whenValues = Array.isArray(node.value) + ? node.value.map(localEvalNode) + : [localEvalNode(node.value)]; + + for (const caseItem of node.cases) { + // Handle both single patterns and arrays of patterns + const patterns = caseItem.pattern.map(localEvalNode); - // Otherwise, values must be equal - if (value !== patternValue) { + // Check if patterns match the values + let matches = true; + if (whenValues.length !== patterns.length) { matches = false; - break; + } else { + for (let i = 0; i < whenValues.length; i++) { + const value = whenValues[i]; + const pattern = patterns[i]; + + if (pattern === true) { // Wildcard pattern + // Wildcard always matches + continue; + } else if (value !== pattern) { + matches = false; + break; + } + } + } + + if (matches) { + const results = caseItem.result.map(localEvalNode); + if (results.length === 1) { + return results[0]; + } + return results.join(' '); } } + throw new Error('No matching pattern found'); + case 'WildcardPattern': + return true; + case 'IOInExpression': + const readline = require('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); - if (matches) { - // Evaluate all results - const results = caseItem.result.map(evalNode); - // If there's only one result, return it directly (preserves number type) - if (results.length === 1) { - return results[0]; - } - // Otherwise join multiple results as string - return results.join(' '); + return new Promise((resolve) => { + rl.question('', (input) => { + rl.close(); + const num = parseInt(input); + resolve(isNaN(num) ? input : num); + }); + }); + case 'IOOutExpression': + const localOutputValue = localEvalNode(node.value); + console.log(localOutputValue); + return localOutputValue; + case 'IOAssertExpression': + const localAssertionValue = localEvalNode(node.value); + if (!localAssertionValue) { + throw new Error('Assertion failed'); } - } - throw new Error('No matching pattern found'); - case 'WildcardPattern': - return true; // Wildcard always matches - case 'IOInExpression': - // Read from stdin - const readline = require('readline'); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout - }); - - return new Promise((resolve) => { - rl.question('', (input) => { - rl.close(); - const num = parseInt(input); - resolve(isNaN(num) ? input : num); - }); - }); - case 'IOOutExpression': - // Output to stdout - const outputValue = evalNode(node.value); - console.log(outputValue); - return outputValue; - case 'IOAssertExpression': - // Assert that actual equals expected - const actualValue = evalNode(node.actual); - const expectedValue = evalNode(node.expected); - if (actualValue !== expectedValue) { - throw new Error(`Assertion failed: expected ${JSON.stringify(expectedValue)}, got ${JSON.stringify(actualValue)}`); - } - return actualValue; - default: - throw new Error(`Unknown node type: ${node.type}`); + return localAssertionValue; + case 'FunctionReference': + const localFunctionValue = globalScope[node.name]; + if (localFunctionValue === undefined) { + throw new Error(`Function ${node.name} is not defined`); + } + if (typeof localFunctionValue !== 'function') { + throw new Error(`${node.name} is not a function`); + } + return localFunctionValue; + case 'ArrowExpression': + // Arrow expressions are function bodies that should be evaluated + return localEvalNode(node.body); + default: + throw new Error(`Unknown node type: ${node.type}`); + } + } finally { + callStackTracker.pop(); } - } + }; let lastResult; for (let node of ast.body) { - if (node) { // Skip undefined nodes + if (node) { lastResult = evalNode(node); } } - // Handle async results (from interactive IO operations) if (lastResult instanceof Promise) { return lastResult.then(result => { return result; @@ -1267,367 +1447,295 @@ function interpreter(ast) { return lastResult; } -// Debug configuration -const DEBUG = process.env.DEBUG === 'true' || process.argv.includes('--debug'); - +/** + * Debug logging utility function. + * + * @param {string} message - Debug message to log + * @param {*} [data=null] - Optional data to log with the message + * + * @description Logs debug messages to console when DEBUG environment variable is set. + * Provides verbose output during development while remaining silent in production. + * + * Debug functions are gated by the DEBUG environment variable, allowing for + * verbose output during development and silent operation in production. This + * approach makes it easy to trace execution and diagnose issues without + * cluttering normal output. + */ function debugLog(message, data = null) { - if (DEBUG) { + if (process.env.DEBUG) { + console.log(`[DEBUG] ${message}`); if (data) { - console.log(`[DEBUG] ${message}:`, JSON.stringify(data, null, 2)); - } else { - console.log(`[DEBUG] ${message}`); + console.log(data); } } } +/** + * Debug error logging utility function. + * + * @param {string} message - Debug error message to log + * @param {Error} [error=null] - Optional error object to log + * + * @description Logs debug error messages to console when DEBUG environment variable is set. + * Provides verbose error output during development while remaining silent in production. + * + * Debug functions are gated by the DEBUG environment variable, allowing for + * verbose output during development and silent operation in production. This + * approach makes it easy to trace execution and diagnose issues without + * cluttering normal output. + */ function debugError(message, error = null) { - if (DEBUG) { + if (process.env.DEBUG) { console.error(`[DEBUG ERROR] ${message}`); if (error) { - console.error(`[DEBUG ERROR] Details:`, error); + console.error(error); } } } -// Main execution logic -const fs = require('fs'); -const readline = require('readline'); - /** - * Execute a script file + * Call stack tracking for debugging recursion issues. + * + * @description Tracks function calls to help identify infinite recursion + * and deep call stacks that cause stack overflow errors. This is essential + * for debugging the interpreter's recursive evaluation of AST nodes. + * + * The tracker maintains a stack of function calls with timestamps and context + * information, counts function calls to identify hot paths, and detects + * potential infinite recursion by monitoring stack depth. + * + * This tool is particularly important for the combinator-based architecture + * where function calls are the primary execution mechanism, and complex + * nested expressions can lead to deep call stacks. */ -function executeFile(filePath) { - try { - debugLog(`Executing file: ${filePath}`); - - const input = fs.readFileSync(filePath, 'utf-8'); - debugLog('Input content', input); +const callStackTracker = { + stack: [], + maxDepth: 0, + callCounts: new Map(), + + /** + * Push a function call onto the stack + * @param {string} functionName - Name of the function being called + * @param {string} context - Context where the call is happening + */ + push: function(functionName, context = '') { + const callInfo = { functionName, context, timestamp: Date.now() }; + this.stack.push(callInfo); - const tokens = lexer(input); - debugLog('Tokens generated', tokens); + // Track maximum depth + if (this.stack.length > this.maxDepth) { + this.maxDepth = this.stack.length; + } - const ast = parser(tokens); - debugLog('AST generated', ast); + // Count function calls + const key = `${functionName}${context ? `:${context}` : ''}`; + this.callCounts.set(key, (this.callCounts.get(key) || 0) + 1); - const result = interpreter(ast); - debugLog('Interpreter result', result); + // Check for potential infinite recursion + if (this.stack.length > 1000) { + console.error('=== POTENTIAL INFINITE RECURSION DETECTED ==='); + console.error('Call stack depth:', this.stack.length); + console.error('Function call counts:', Object.fromEntries(this.callCounts)); + console.error('Recent call stack:'); + this.stack.slice(-10).forEach((call, i) => { + console.error(` ${this.stack.length - 10 + i}: ${call.functionName}${call.context ? ` (${call.context})` : ''}`); + }); + throw new Error(`Potential infinite recursion detected. Call stack depth: ${this.stack.length}`); + } - // Only print result if it's not undefined - if (result !== undefined) { - console.log(result); + if (process.env.DEBUG && this.stack.length % 100 === 0) { + console.log(`[DEBUG] Call stack depth: ${this.stack.length}, Max: ${this.maxDepth}`); } + }, + + /** + * Pop a function call from the stack + */ + pop: function() { + return this.stack.pop(); + }, + + /** + * Get current stack depth + */ + getDepth: function() { + return this.stack.length; + }, + + /** + * Get call statistics + */ + getStats: function() { + return { + currentDepth: this.stack.length, + maxDepth: this.maxDepth, + callCounts: Object.fromEntries(this.callCounts) + }; + }, + + /** + * Reset the tracker + */ + reset: function() { + this.stack = []; + this.maxDepth = 0; + this.callCounts.clear(); + } +}; + +/** + * Cross-platform file I/O utility + * + * @param {string} filePath - Path to the file to read + * @returns {Promise<string>} File contents as a string + * @throws {Error} For file reading errors + * + * @description Handles file reading across different platforms (Node.js, Bun, browser) + * with appropriate fallbacks for each environment. This function is essential for + * the language's file execution model where scripts are loaded from .txt files. + * + * The function prioritizes ES modules compatibility by using dynamic import, + * but falls back to require for older Node.js versions. Browser environments + * are not supported for file I/O operations. + * + * This cross-platform approach ensures the language can run in various JavaScript + * environments while maintaining consistent behavior. + */ +async function readFile(filePath) { + // Check if we're in a browser environment + if (typeof window !== 'undefined') { + // Browser environment - would need to implement file input or fetch + throw new Error('File I/O not supported in browser environment'); + } + + // Node.js or Bun environment + try { + // Try dynamic import for ES modules compatibility + const fs = await import('fs'); + return fs.readFileSync(filePath, 'utf8'); } catch (error) { - debugError('Execution failed', error); - console.error(`Error executing file: ${error.message}`); - process.exit(1); + // Fallback to require for older Node.js versions + const fs = require('fs'); + return fs.readFileSync(filePath, 'utf8'); } } /** - * Start REPL mode + * Reads a file, tokenizes, parses, and interprets it. + * + * @param {string} filePath - Path to the file to execute + * @returns {Promise<*>} The result of executing the file + * @throws {Error} For file reading, parsing, or execution errors + * + * @description Main entry point for file execution. Handles the complete language + * pipeline: file reading, lexical analysis, parsing, and interpretation. + * + * This function orchestrates the entire language execution process: + * 1. Reads the source file using cross-platform I/O utilities + * 2. Tokenizes the source code using the lexer + * 3. Parses tokens into an AST using the combinator-based parser + * 4. Interprets the AST using the combinator-based interpreter + * + * The function provides comprehensive error handling and debug output at each + * stage for transparency and troubleshooting. It also manages the call stack + * tracker to provide execution statistics and detect potential issues. + * + * Supports both synchronous and asynchronous execution, with proper + * error handling and process exit codes. */ -function startREPL() { - console.log('Scripting Language REPL'); - console.log('Type expressions to evaluate. End with semicolon (;) to execute.'); - console.log('Type "exit" to quit.'); - console.log(''); - - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - prompt: '> ' - }); - - // Create a persistent global scope for the REPL - let globalScope = {}; - let currentInput = ''; - - rl.prompt(); - - rl.on('line', (line) => { - const trimmedLine = line.trim(); - - if (trimmedLine === 'exit' || trimmedLine === 'quit') { - rl.close(); - return; +async function executeFile(filePath) { + try { + // Validate file extension + if (!filePath.endsWith('.txt')) { + throw new Error('Only .txt files are supported'); } - // Add the line to current input - currentInput += line + '\n'; + const input = await readFile(filePath); + + debugLog('Input:', input); + + const tokens = lexer(input); + debugLog('Tokens:', tokens); + + const ast = parser(tokens); + debugLog('AST:', JSON.stringify(ast, null, 2)); - // Check if the input ends with a semicolon - if (currentInput.trim().endsWith(';')) { - try { - const tokens = lexer(currentInput); - const ast = parser(tokens); - - // Create a custom interpreter that uses the persistent scope - const result = interpreterWithScope(ast, globalScope); - - // Only print result if it's not undefined - if (result !== undefined) { - console.log(result); + const result = interpreter(ast); + + if (result instanceof Promise) { + result.then(finalResult => { + if (finalResult !== undefined) { + console.log(finalResult); } - } catch (error) { - console.error(`Error: ${error.message}`); + // Print call stack statistics after execution + const stats = callStackTracker.getStats(); + console.log('\n=== CALL STACK STATISTICS ==='); + console.log('Maximum call stack depth:', stats.maxDepth); + console.log('Function call counts:', JSON.stringify(stats.callCounts, null, 2)); + }).catch(error => { + console.error(`Error executing file: ${error.message}`); + // Print call stack statistics on error + const stats = callStackTracker.getStats(); + console.error('\n=== CALL STACK STATISTICS ON ERROR ==='); + console.error('Maximum call stack depth:', stats.maxDepth); + console.error('Function call counts:', JSON.stringify(stats.callCounts, null, 2)); + process.exit(1); + }); + } else { + if (result !== undefined) { + console.log(result); } - - // Reset current input for next expression - currentInput = ''; + // Print call stack statistics after execution + const stats = callStackTracker.getStats(); + console.log('\n=== CALL STACK STATISTICS ==='); + console.log('Maximum call stack depth:', stats.maxDepth); + console.log('Function call counts:', JSON.stringify(stats.callCounts, null, 2)); } - - rl.prompt(); - }); - - rl.on('close', () => { - console.log('Goodbye!'); - process.exit(0); - }); + } catch (error) { + console.error(`Error executing file: ${error.message}`); + // Print call stack statistics on error + const stats = callStackTracker.getStats(); + console.error('\n=== CALL STACK STATISTICS ON ERROR ==='); + console.error('Maximum call stack depth:', stats.maxDepth); + console.error('Function call counts:', JSON.stringify(stats.callCounts, null, 2)); + process.exit(1); + } } /** - * Interpreter that uses a provided global scope + * CLI argument handling and program entry point. + * + * @description Processes command line arguments and executes the specified file. + * Provides helpful error messages for incorrect usage. + * + * The language is designed for file execution only (no REPL), so the CLI + * enforces this usage and provides helpful error messages for incorrect invocation. + * The function validates that exactly one file path is provided and that the + * file has the correct .txt extension. + * + * Exits with appropriate error codes for different failure scenarios. */ -function interpreterWithScope(ast, globalScope) { - function evalNode(node) { - if (!node) { - return undefined; - } - switch (node.type) { - case 'NumberLiteral': - return parseInt(node.value); - case 'StringLiteral': - return node.value; - case 'PlusExpression': - return evalNode(node.left) + evalNode(node.right); - case 'MinusExpression': - return evalNode(node.left) - evalNode(node.right); - case 'MultiplyExpression': - return evalNode(node.left) * evalNode(node.right); - case 'DivideExpression': - const divisor = evalNode(node.right); - if (divisor === 0) { - throw new Error('Division by zero'); - } - return evalNode(node.left) / evalNode(node.right); - case 'AssignmentExpression': - if (globalScope.hasOwnProperty(node.name)) { - throw new Error(`Cannot reassign immutable variable: ${node.name}`); - } - const value = evalNode(node.value); - globalScope[node.name] = value; - return; - case 'Identifier': - const identifierValue = globalScope[node.value]; - if (identifierValue === undefined) { - throw new Error(`Variable ${node.value} is not defined`); - } - return identifierValue; - case 'FunctionDeclaration': - if (globalScope.hasOwnProperty(node.name)) { - throw new Error(`Cannot reassign immutable variable: ${node.name}`); - } - globalScope[node.name] = function(...args) { - let localScope = Object.create(globalScope); - for (let i = 0; i < node.params.length; i++) { - localScope[node.params[i]] = args[i]; - } - return localEvalNode(node.body); - }; - return; - case 'FunctionCall': - if (globalScope[node.name] instanceof Function) { - let args = node.args.map(evalNode); - return globalScope[node.name](...args); - } - throw new Error(`Function ${node.name} is not defined`); - case 'CaseExpression': - const values = node.value.map(evalNode); - - for (const caseItem of node.cases) { - const pattern = caseItem.pattern.map(evalNode); - - let matches = true; - for (let i = 0; i < Math.max(values.length, pattern.length); i++) { - const value = values[i]; - const patternValue = pattern[i]; - - if (patternValue === true) continue; - - if (value !== patternValue) { - matches = false; - break; - } - } - - if (matches) { - const results = caseItem.result.map(evalNode); - if (results.length === 1) { - return results[0]; - } - return results.join(' '); - } - } - throw new Error('No matching pattern found'); - case 'WildcardPattern': - return true; - case 'IOInExpression': - const readline = require('readline'); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout - }); - - return new Promise((resolve) => { - rl.question('', (input) => { - rl.close(); - const num = parseInt(input); - resolve(isNaN(num) ? input : num); - }); - }); - case 'IOOutExpression': - const outputValue = evalNode(node.value); - console.log(outputValue); - return outputValue; - default: - throw new Error(`Unknown node type: ${node.type}`); - } - } - - const localEvalNode = (node) => { - if (!node) { - return undefined; - } - switch (node.type) { - case 'NumberLiteral': - return parseInt(node.value); - case 'StringLiteral': - return node.value; - case 'PlusExpression': - return localEvalNode(node.left) + localEvalNode(node.right); - case 'MinusExpression': - return localEvalNode(node.left) - localEvalNode(node.right); - case 'MultiplyExpression': - return localEvalNode(node.left) * localEvalNode(node.right); - case 'DivideExpression': - const divisor = localEvalNode(node.right); - if (divisor === 0) { - throw new Error('Division by zero'); - } - return localEvalNode(node.left) / localEvalNode(node.right); - case 'AssignmentExpression': - if (globalScope.hasOwnProperty(node.name)) { - throw new Error(`Cannot reassign immutable variable: ${node.name}`); - } - globalScope[node.name] = localEvalNode(node.value); - return; - case 'Identifier': - const identifierValue = globalScope[node.value]; - if (identifierValue === undefined && node.value) { - return node.value; - } - return identifierValue; - case 'FunctionDeclaration': - if (globalScope.hasOwnProperty(node.name)) { - throw new Error(`Cannot reassign immutable variable: ${node.name}`); - } - globalScope[node.name] = function(...args) { - let nestedScope = Object.create(globalScope); - for (let i = 0; i < node.params.length; i++) { - nestedScope[node.params[i]] = args[i]; - } - return localEvalNode(node.body); - }; - return; - case 'FunctionCall': - if (globalScope[node.name] instanceof Function) { - let args = node.args.map(localEvalNode); - return globalScope[node.name](...args); - } - throw new Error(`Function ${node.name} is not defined`); - case 'CaseExpression': - const values = node.value.map(localEvalNode); - - for (const caseItem of node.cases) { - const pattern = caseItem.pattern.map(localEvalNode); - - let matches = true; - for (let i = 0; i < Math.max(values.length, pattern.length); i++) { - const value = values[i]; - const patternValue = pattern[i]; - - if (patternValue === true) continue; - - if (value !== patternValue) { - matches = false; - break; - } - } - - if (matches) { - const results = caseItem.result.map(localEvalNode); - if (results.length === 1) { - return results[0]; - } - return results.join(' '); - } - } - throw new Error('No matching pattern found'); - case 'WildcardPattern': - return true; - case 'IOInExpression': - const readline = require('readline'); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout - }); - - return new Promise((resolve) => { - rl.question('', (input) => { - rl.close(); - const num = parseInt(input); - resolve(isNaN(num) ? input : num); - }); - }); - case 'IOOutExpression': - const localOutputValue = localEvalNode(node.value); - console.log(localOutputValue); - return localOutputValue; - default: - throw new Error(`Unknown node type: ${node.type}`); - } - }; +async function main() { + const args = process.argv.slice(2); - let lastResult; - for (let node of ast.body) { - if (node) { - lastResult = evalNode(node); - } - } - - if (lastResult instanceof Promise) { - return lastResult.then(result => { - return result; - }); + if (args.length === 0) { + console.error('Usage: node lang.js <file>'); + console.error(' Provide a file path to execute'); + process.exit(1); + } else if (args.length === 1) { + // Execute the file + const filePath = args[0]; + await executeFile(filePath); + } else { + // Too many arguments + console.error('Usage: node lang.js <file>'); + console.error(' Provide exactly one file path to execute'); + process.exit(1); } - - return lastResult; } -// Check command line arguments -const args = process.argv.slice(2); - -if (args.length === 0) { - // No arguments - start REPL mode - startREPL(); -} else if (args.length === 1) { - // One argument - execute the file - const filePath = args[0]; - executeFile(filePath); -} else { - // Too many arguments - console.error('Usage: node lang.js [file]'); - console.error(' If no file is provided, starts REPL mode'); - console.error(' If file is provided, executes the file'); +// Start the program +main().catch(error => { + console.error('Fatal error:', error.message); process.exit(1); -} \ No newline at end of file +}); \ No newline at end of file diff --git a/js/scripting-lang/lexer.js b/js/scripting-lang/lexer.js new file mode 100644 index 0000000..de87ac7 --- /dev/null +++ b/js/scripting-lang/lexer.js @@ -0,0 +1,397 @@ +// Lexer for the scripting language +// Supports both Node.js and browser environments + +/** + * Token types for the language + * + * @description Defines all token types used by the lexer and parser. + * Each token type represents a distinct syntactic element in the language. + * + * The token types are organized into categories: + * - Literals: NUMBER, STRING, TRUE, FALSE + * - Operators: PLUS, MINUS, MULTIPLY, DIVIDE, MODULO, POWER, etc. + * - Keywords: WHEN, IS, THEN, FUNCTION, etc. + * - Punctuation: LEFT_PAREN, RIGHT_PAREN, SEMICOLON, COMMA, etc. + * - Special: IO_IN, IO_OUT, IO_ASSERT, FUNCTION_REF + * + * This enumeration provides a centralized definition of all possible + * token types, ensuring consistency between lexer and parser. + */ +export const TokenType = { + NUMBER: 'NUMBER', + PLUS: 'PLUS', + MINUS: 'MINUS', + MULTIPLY: 'MULTIPLY', + DIVIDE: 'DIVIDE', + IDENTIFIER: 'IDENTIFIER', + ASSIGNMENT: 'ASSIGNMENT', + ARROW: 'ARROW', + CASE: 'CASE', + OF: 'OF', + WHEN: 'WHEN', + IS: 'IS', + THEN: 'THEN', + WILDCARD: 'WILDCARD', + FUNCTION: 'FUNCTION', + LEFT_PAREN: 'LEFT_PAREN', + RIGHT_PAREN: 'RIGHT_PAREN', + LEFT_BRACE: 'LEFT_BRACE', + RIGHT_BRACE: 'RIGHT_BRACE', + LEFT_BRACKET: 'LEFT_BRACKET', + RIGHT_BRACKET: 'RIGHT_BRACKET', + SEMICOLON: 'SEMICOLON', + COMMA: 'COMMA', + DOT: 'DOT', + STRING: 'STRING', + TRUE: 'TRUE', + FALSE: 'FALSE', + AND: 'AND', + OR: 'OR', + XOR: 'XOR', + NOT: 'NOT', + EQUALS: 'EQUALS', + LESS_THAN: 'LESS_THAN', + GREATER_THAN: 'GREATER_THAN', + LESS_EQUAL: 'LESS_EQUAL', + GREATER_EQUAL: 'GREATER_EQUAL', + NOT_EQUAL: 'NOT_EQUAL', + MODULO: 'MODULO', + POWER: 'POWER', + IO_IN: 'IO_IN', + IO_OUT: 'IO_OUT', + IO_ASSERT: 'IO_ASSERT', + FUNCTION_REF: 'FUNCTION_REF' +}; + +/** + * Converts source code into tokens + * + * @param {string} input - The source code to tokenize + * @returns {Array.<Object>} Array of token objects with type, value, line, and column + * @throws {Error} For unexpected characters or malformed tokens + * + * @description The lexer performs lexical analysis by converting source code + * into a stream of tokens. Each token represents a meaningful unit of the + * language syntax, such as identifiers, literals, operators, and keywords. + * + * The lexer implements a character-by-character scanning approach with + * lookahead for multi-character tokens. It maintains line and column + * information for accurate error reporting and debugging. + * + * Key features: + * - Handles whitespace and comments (single-line and multi-line) + * - Recognizes all language constructs including operators, keywords, and literals + * - Supports string literals with escape sequences + * - Provides detailed position information for error reporting + * - Cross-platform compatibility (Node.js, Bun, browser) + * + * The lexer is designed to be robust and provide clear error messages + * for malformed input, making it easier to debug syntax errors in user code. + */ +export function lexer(input) { + const tokens = []; + let current = 0; + let line = 1; + let column = 1; + + while (current < input.length) { + let char = input[current]; + + // Skip whitespace + if (/\s/.test(char)) { + if (char === '\n') { + line++; + column = 1; + } else { + column++; + } + current++; + continue; + } + + // Skip comments (single line and multi-line) + if (char === '/' && input[current + 1] === '/') { + while (current < input.length && input[current] !== '\n') { + current++; + column++; + } + continue; + } + + // Skip multi-line comments /* ... */ + if (char === '/' && input[current + 1] === '*') { + current += 2; // Skip /* + column += 2; + while (current < input.length - 1 && !(input[current] === '*' && input[current + 1] === '/')) { + if (input[current] === '\n') { + line++; + column = 1; + } else { + column++; + } + current++; + } + if (current < input.length - 1) { + current += 2; // Skip */ + column += 2; + } + continue; + } + + // IO operations (..in, ..out, ..assert) + if (char === '.' && input[current + 1] === '.') { + current += 2; // Skip both dots + column += 2; + + // Read the IO operation name + let operation = ''; + while (current < input.length && /[a-zA-Z]/.test(input[current])) { + operation += input[current]; + current++; + column++; + } + + // Determine the IO operation type + switch (operation) { + case 'in': + tokens.push({ type: TokenType.IO_IN, line, column: column - operation.length - 2 }); + break; + case 'out': + tokens.push({ type: TokenType.IO_OUT, line, column: column - operation.length - 2 }); + break; + case 'assert': + tokens.push({ type: TokenType.IO_ASSERT, line, column: column - operation.length - 2 }); + break; + default: + throw new Error(`Unknown IO operation: ..${operation} at line ${line}, column ${column - operation.length - 2}`); + } + continue; + } + + // Function references (@function) + if (char === '@') { + current++; // Skip '@' + column++; + + // Read the function name + let functionName = ''; + while (current < input.length && /[a-zA-Z0-9_]/.test(input[current])) { + functionName += input[current]; + current++; + column++; + } + + if (functionName === '') { + throw new Error(`Invalid function reference at line ${line}, column ${column - 1}`); + } + + tokens.push({ type: TokenType.FUNCTION_REF, name: functionName, line, column: column - functionName.length - 1 }); + continue; + } + + // Numbers + if (/[0-9]/.test(char)) { + let value = ''; + while (current < input.length && /[0-9.]/.test(input[current])) { + value += input[current]; + current++; + column++; + } + tokens.push({ type: TokenType.NUMBER, value: parseFloat(value), line, column: column - value.length }); + continue; + } + + // Identifiers and keywords + if (/[a-zA-Z_]/.test(char)) { + let value = ''; + const startColumn = column; + while (current < input.length && /[a-zA-Z0-9_]/.test(input[current])) { + value += input[current]; + current++; + column++; + } + + // Check for keywords + switch (value) { + case 'true': + tokens.push({ type: TokenType.TRUE, value: true, line, column: startColumn }); + break; + case 'false': + tokens.push({ type: TokenType.FALSE, value: false, line, column: startColumn }); + break; + case 'and': + tokens.push({ type: TokenType.AND, line, column: startColumn }); + break; + case 'or': + tokens.push({ type: TokenType.OR, line, column: startColumn }); + break; + case 'xor': + tokens.push({ type: TokenType.XOR, line, column: startColumn }); + break; + case 'not': + tokens.push({ type: TokenType.NOT, line, column: startColumn }); + break; + case 'case': + tokens.push({ type: TokenType.CASE, line, column: startColumn }); + break; + case 'of': + tokens.push({ type: TokenType.OF, line, column: startColumn }); + break; + case 'when': + tokens.push({ type: TokenType.WHEN, line, column: startColumn }); + break; + case 'is': + tokens.push({ type: TokenType.IS, line, column: startColumn }); + break; + case 'then': + tokens.push({ type: TokenType.THEN, line, column: startColumn }); + break; + case 'function': + tokens.push({ type: TokenType.FUNCTION, line, column: startColumn }); + break; + case '_': + tokens.push({ type: TokenType.WILDCARD, line, column: startColumn }); + break; + default: + tokens.push({ type: TokenType.IDENTIFIER, value, line, column: startColumn }); + } + continue; + } + + // Strings + if (char === '"') { + let value = ''; + current++; + column++; + while (current < input.length && input[current] !== '"') { + if (input[current] === '\\') { + current++; + column++; + if (current < input.length) { + switch (input[current]) { + case 'n': value += '\n'; break; + case 't': value += '\t'; break; + case 'r': value += '\r'; break; + case '\\': value += '\\'; break; + case '"': value += '"'; break; + default: value += input[current]; + } + } + } else { + value += input[current]; + } + current++; + column++; + } + if (current < input.length) { + current++; + column++; + } + tokens.push({ type: TokenType.STRING, value, line, column: column - value.length - 2 }); + continue; + } + + // Operators and punctuation + switch (char) { + case '+': + tokens.push({ type: TokenType.PLUS, line, column }); + break; + case '-': + if (input[current + 1] === '>') { + tokens.push({ type: TokenType.ARROW, line, column }); + current++; + column++; + } else { + tokens.push({ type: TokenType.MINUS, line, column }); + } + break; + case '*': + tokens.push({ type: TokenType.MULTIPLY, line, column }); + break; + case '/': + tokens.push({ type: TokenType.DIVIDE, line, column }); + break; + case '%': + tokens.push({ type: TokenType.MODULO, line, column }); + break; + case '^': + tokens.push({ type: TokenType.POWER, line, column }); + break; + case '(': + tokens.push({ type: TokenType.LEFT_PAREN, line, column }); + break; + case ')': + tokens.push({ type: TokenType.RIGHT_PAREN, line, column }); + break; + case '{': + tokens.push({ type: TokenType.LEFT_BRACE, line, column }); + break; + case '}': + tokens.push({ type: TokenType.RIGHT_BRACE, line, column }); + break; + case '[': + tokens.push({ type: TokenType.LEFT_BRACKET, line, column }); + break; + case ']': + tokens.push({ type: TokenType.RIGHT_BRACKET, line, column }); + break; + case ';': + tokens.push({ type: TokenType.SEMICOLON, line, column }); + break; + case ',': + tokens.push({ type: TokenType.COMMA, line, column }); + break; + case '.': + tokens.push({ type: TokenType.DOT, line, column }); + break; + case ':': + tokens.push({ type: TokenType.ASSIGNMENT, line, column }); + break; + + case '=': + if (input[current + 1] === '=') { + tokens.push({ type: TokenType.EQUALS, line, column }); + current++; + column++; + } else { + // Single = is used for equality comparison in assertions + tokens.push({ type: TokenType.EQUALS, line, column }); + } + break; + case '<': + if (input[current + 1] === '=') { + tokens.push({ type: TokenType.LESS_EQUAL, line, column }); + current++; + column++; + } else { + tokens.push({ type: TokenType.LESS_THAN, line, column }); + } + break; + case '>': + if (input[current + 1] === '=') { + tokens.push({ type: TokenType.GREATER_EQUAL, line, column }); + current++; + column++; + } else { + tokens.push({ type: TokenType.GREATER_THAN, line, column }); + } + break; + case '!': + if (input[current + 1] === '=') { + tokens.push({ type: TokenType.NOT_EQUAL, line, column }); + current++; + column++; + } else { + throw new Error(`Unexpected character: ${char} at line ${line}, column ${column}`); + } + break; + default: + throw new Error(`Unexpected character: ${char} at line ${line}, column ${column}`); + } + + current++; + column++; + } + + return tokens; +} \ No newline at end of file diff --git a/js/scripting-lang/package.json b/js/scripting-lang/package.json new file mode 100644 index 0000000..20b23c1 --- /dev/null +++ b/js/scripting-lang/package.json @@ -0,0 +1,24 @@ +{ + "name": "scripting-lang", + "version": "0.0.1", + "description": "An elm-inspired, as of yet unnamed functional scripting language that relies heavily on combinators.", + "type": "module", + "main": "lang.js", + "scripts": { + "start": "bun run lang.js", + "test": "./run_tests.sh", + "doc": "bun run jsdoc lexer.js parser.js lang.js -d docs --readme README.md --package package.json --tutorials COMBINATORS.md", + "doc:clean": "rm -rf docs" + }, + "engines": { + "node": ">=14.0.0", + "bun": ">=1.1.0" + }, + "keywords": ["language", "interpreter", "scripting", "combinators", "functional"], + "author": "eli_oat", + "license": "No rulers; no kings; no masters.", + "devDependencies": { + "ink-docstrap": "^1.3.2", + "jsdoc-babel": "^0.5.0" + } +} \ No newline at end of file diff --git a/js/scripting-lang/parser.js b/js/scripting-lang/parser.js new file mode 100644 index 0000000..b1aa77f --- /dev/null +++ b/js/scripting-lang/parser.js @@ -0,0 +1,893 @@ +// Parser for the scripting language +// Exports: parser(tokens) +// Converts tokens to an Abstract Syntax Tree (AST) + +import { TokenType } from './lexer.js'; + +/** + * Parser: Converts tokens to an Abstract Syntax Tree (AST). + * + * @param {Array.<Object>} tokens - Array of tokens from the lexer + * @returns {Object} Abstract Syntax Tree with program body + * @throws {Error} For parsing errors like unexpected tokens or missing delimiters + * + * @description The parser implements a combinator-based architecture where all + * operators are translated to function calls to standard library combinators. + * This eliminates parsing ambiguity while preserving the original syntax. + * + * The parser uses a recursive descent approach with proper operator precedence + * handling. Each operator expression (e.g., x + y) is translated to a FunctionCall + * node (e.g., add(x, y)) that will be executed by the interpreter using the + * corresponding combinator function. + * + * Key architectural decisions: + * - All operators become FunctionCall nodes to eliminate ambiguity + * - Operator precedence is handled through recursive parsing functions + * - Function calls are detected by looking for identifiers followed by expressions + * - When expressions and case patterns are parsed with special handling + * - Table literals and access are parsed as structured data + * + * The parser maintains a current token index and advances through the token + * stream, building the AST bottom-up from primary expressions to complex + * logical expressions. + */ +export function parser(tokens) { + let current = 0; + + /** + * Main parsing function that processes the entire token stream + * + * @returns {Object} Complete AST with program body + * @description Iterates through all tokens, parsing each statement or expression + * and building the program body. Handles empty programs gracefully. + */ + function parse() { + const body = []; + + while (current < tokens.length) { + const node = walk(); + if (node) { + body.push(node); + } + } + + return { type: 'Program', body }; + } + + /** + * Main walk function that dispatches to appropriate parsing functions + * + * @returns {Object|null} Parsed AST node or null for empty statements + * @description Determines the type of construct at the current position + * and delegates to the appropriate parsing function. The order of checks + * determines parsing precedence for top-level constructs. + * + * Parsing order: + * 1. IO operations (highest precedence for top-level constructs) + * 2. Assignments (identifier followed by assignment token) + * 3. When expressions (pattern matching) + * 4. Function definitions (explicit function declarations) + * 5. Logical expressions (default case for all other expressions) + */ + function walk() { + const token = tokens[current]; + + if (!token) return null; + + // Handle IO operations first + if (token.type === TokenType.IO_IN) { + return parseIOIn(); + } + if (token.type === TokenType.IO_OUT) { + return parseIOOut(); + } + if (token.type === TokenType.IO_ASSERT) { + return parseIOAssert(); + } + + // Handle assignments + if (token.type === TokenType.IDENTIFIER && + current + 1 < tokens.length && + tokens[current + 1].type === TokenType.ASSIGNMENT) { + return parseAssignment(); + } + + // Handle when expressions + if (token.type === TokenType.WHEN) { + return parseWhenExpression(); + } + + // Handle function definitions + if (token.type === TokenType.FUNCTION) { + return parseFunctionDefinition(); + } + + + + // For all other expressions, parse as logical expressions + return parseLogicalExpression(); + } + + /** + * Parse assignment statements: identifier : expression; + * + * @returns {Object} Assignment AST node + * @throws {Error} For malformed assignments or missing semicolons + * @description Parses variable assignments and function definitions. + * Supports both simple assignments (x : 42) and arrow function definitions + * (f : x y -> x + y). Also handles when expressions as assignment values. + * + * The function uses lookahead to distinguish between different assignment + * types and parses the value according to the detected type. + */ + function parseAssignment() { + const identifier = tokens[current].value; + current++; // Skip identifier + current++; // Skip assignment token (:) + + // Check if the value is a when expression + if (tokens[current].type === TokenType.WHEN) { + const value = parseWhenExpression(); + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'Assignment', + identifier, + value + }; + } else { + // Check if this is an arrow function: param1 param2 -> body + const params = []; + let isArrowFunction = false; + + // Look ahead to see if this is an arrow function + let lookAhead = current; + while (lookAhead < tokens.length && tokens[lookAhead].type === TokenType.IDENTIFIER) { + lookAhead++; + } + + if (lookAhead < tokens.length && tokens[lookAhead].type === TokenType.ARROW) { + // This is an arrow function + isArrowFunction = true; + + // Parse parameters + while (current < tokens.length && tokens[current].type === TokenType.IDENTIFIER) { + params.push(tokens[current].value); + current++; + } + + if (current >= tokens.length || tokens[current].type !== TokenType.ARROW) { + throw new Error('Expected "->" after parameters in arrow function'); + } + current++; // Skip '->' + + // Check if the body is a when expression + let body; + if (tokens[current].type === TokenType.WHEN) { + body = parseWhenExpression(); + } else { + body = parseLogicalExpression(); + } + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'Assignment', + identifier, + value: { + type: 'FunctionDeclaration', + params, + body + } + }; + } else { + // Parse the value as an expression (function calls will be handled by expression parsing) + const value = parseLogicalExpression(); + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'Assignment', + identifier, + value + }; + } + } + } + + /** + * Parse when expressions: when value is pattern then result pattern then result; + * + * @returns {Object} WhenExpression AST node + * @throws {Error} For malformed when expressions + * @description Parses pattern matching expressions with support for single + * and multiple values/patterns. The when expression is the primary pattern + * matching construct in the language. + * + * Supports: + * - Single value patterns: when x is 42 then "correct" _ then "wrong" + * - Multiple value patterns: when x y is 0 0 then "both zero" _ _ then "not both" + * - Wildcard patterns: _ (matches any value) + * - Function references: @functionName + * + * The function parses values, patterns, and results, building a structured + * AST that the interpreter can efficiently evaluate. + */ + function parseWhenExpression() { + current++; // Skip 'when' + + // Parse the value(s) - can be single value or multiple values + const values = []; + while (current < tokens.length && tokens[current].type !== TokenType.IS) { + // For when expressions, we want to parse simple identifiers and expressions + // but not treat them as function calls + let value; + if (tokens[current].type === TokenType.IDENTIFIER) { + // Check if this is followed by another identifier (multi-value case) + if (current + 1 < tokens.length && + tokens[current + 1].type === TokenType.IDENTIFIER && + tokens[current + 2].type === TokenType.IS) { + // This is a multi-value case like "when x y is" + value = { type: 'Identifier', value: tokens[current].value }; + current++; + values.push(value); + value = { type: 'Identifier', value: tokens[current].value }; + current++; + values.push(value); + break; // We've consumed both values and will hit IS next + } else { + // Single identifier value + value = { type: 'Identifier', value: tokens[current].value }; + current++; + } + } else { + // For other types, use normal expression parsing + value = parseLogicalExpression(); + } + values.push(value); + } + + if (current >= tokens.length || tokens[current].type !== TokenType.IS) { + throw new Error('Expected "is" after value in when expression'); + } + current++; // Skip 'is' + + const cases = []; + + while (current < tokens.length) { + // Parse pattern(s) - can be single pattern or multiple patterns + const patterns = []; + + // Parse patterns until we hit THEN + while (current < tokens.length && tokens[current].type !== TokenType.THEN) { + let pattern; + if (process.env.DEBUG) { + console.log(`[DEBUG] parseWhenExpression: parsing pattern, current token = ${tokens[current].type}, value = ${tokens[current].value || 'N/A'}`); + } + if (tokens[current].type === TokenType.IDENTIFIER) { + pattern = { type: 'Identifier', value: tokens[current].value }; + current++; + } else if (tokens[current].type === TokenType.NUMBER) { + pattern = { type: 'NumberLiteral', value: tokens[current].value }; + current++; + } else if (tokens[current].type === TokenType.STRING) { + pattern = { type: 'StringLiteral', value: tokens[current].value }; + current++; + } else if (tokens[current].type === TokenType.WILDCARD) { + pattern = { type: 'WildcardPattern' }; + current++; + } else if (tokens[current].type === TokenType.FUNCTION_REF) { + pattern = { type: 'FunctionReference', name: tokens[current].name }; + current++; + } else { + throw new Error(`Expected pattern (identifier, number, string, wildcard, or function reference) in when expression, got ${tokens[current].type}`); + } + patterns.push(pattern); + } + + if (current >= tokens.length || tokens[current].type !== TokenType.THEN) { + throw new Error('Expected "then" after pattern in when expression'); + } + current++; // Skip 'then' + + // Parse result + const result = parseLogicalExpression(); + + cases.push({ + pattern: patterns, + result: [result] + }); + + // Stop parsing cases when we hit a semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + break; + } else { + // No semicolon, but check if next token is a valid pattern + if ( + current >= tokens.length || + (tokens[current].type !== TokenType.IDENTIFIER && + tokens[current].type !== TokenType.NUMBER && + tokens[current].type !== TokenType.STRING && + tokens[current].type !== TokenType.WILDCARD && + tokens[current].type !== TokenType.FUNCTION_REF) + ) { + break; + } + } + } + + return { + type: 'WhenExpression', + value: values.length === 1 ? values[0] : values, + cases + }; + } + + /** + * Parse function definitions: function (params) : body + * + * @returns {Object} FunctionDefinition AST node + * @throws {Error} For malformed function definitions + * @description Parses explicit function declarations with parameter lists + * and function bodies. This is the traditional function definition syntax + * as opposed to arrow functions. + * + * The function expects: + * - function keyword + * - Parenthesized parameter list + * - Assignment token (:) + * - Function body expression + */ + function parseFunctionDefinition() { + current++; // Skip 'function' + + if (current >= tokens.length || tokens[current].type !== TokenType.LEFT_PAREN) { + throw new Error('Expected "(" after function keyword'); + } + current++; // Skip '(' + + const parameters = []; + while (current < tokens.length && tokens[current].type !== TokenType.RIGHT_PAREN) { + if (tokens[current].type === TokenType.IDENTIFIER) { + parameters.push(tokens[current].value); + current++; + + if (current < tokens.length && tokens[current].type === TokenType.COMMA) { + current++; // Skip comma + } + } else { + throw new Error('Expected parameter name in function definition'); + } + } + + if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_PAREN) { + throw new Error('Expected ")" after function parameters'); + } + current++; // Skip ')' + + if (current >= tokens.length || tokens[current].type !== TokenType.ASSIGNMENT) { + throw new Error('Expected ":" after function parameters'); + } + current++; // Skip ':' + + const body = parseLogicalExpression(); + + return { + type: 'FunctionDefinition', + parameters, + body + }; + } + + /** + * Parse IO input operations: ..in + * + * @returns {Object} IOInExpression AST node + * @description Parses input operations that read from standard input. + * The operation is represented as a simple AST node that the interpreter + * will handle by prompting for user input. + */ + function parseIOIn() { + current++; // Skip IO_IN token + return { type: 'IOInExpression' }; + } + + /** + * Parse IO output operations: ..out expression + * + * @returns {Object} IOOutExpression AST node + * @throws {Error} For malformed output expressions + * @description Parses output operations that write to standard output. + * The expression to output is parsed as a logical expression and will + * be evaluated by the interpreter before being printed. + */ + function parseIOOut() { + current++; // Skip IO_OUT token + const value = parseLogicalExpression(); + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'IOOutExpression', + value + }; + } + + /** + * Parse IO assert operations: ..assert expression + * + * @returns {Object} IOAssertExpression AST node + * @throws {Error} For malformed assert expressions + * @description Parses assertion operations that verify conditions. + * The expression is parsed as a logical expression and will be evaluated + * by the interpreter. If the result is falsy, an assertion error is thrown. + */ + function parseIOAssert() { + current++; // Skip IO_ASSERT token + const value = parseLogicalExpression(); + + // Expect semicolon + if (current < tokens.length && tokens[current].type === TokenType.SEMICOLON) { + current++; + } + + return { + type: 'IOAssertExpression', + value + }; + } + + /** + * Parse logical expressions with proper precedence + * + * @returns {Object} AST node representing the logical expression + * @description Parses logical expressions (and, or, xor) with the lowest + * precedence. All logical operators are translated to FunctionCall nodes + * using the corresponding combinator functions. + * + * Operator precedence (lowest to highest): + * 1. Logical operators (and, or, xor) + * 2. Comparison operators (=, !=, <, >, <=, >=) + * 3. Additive operators (+, -) + * 4. Multiplicative operators (*, /, %) + * 5. Power operator (^) + * 6. Unary operators (not, -) + * 7. Primary expressions (literals, identifiers, function calls, parentheses) + */ + function parseLogicalExpression() { + let left = parseExpression(); + + while (current < tokens.length) { + const token = tokens[current]; + + if (token.type === TokenType.AND || + token.type === TokenType.OR || + token.type === TokenType.XOR) { + current++; + const right = parseExpression(); + left = { + type: 'FunctionCall', + name: token.type === TokenType.AND ? 'logicalAnd' : + token.type === TokenType.OR ? 'logicalOr' : 'logicalXor', + args: [left, right] + }; + } else { + break; + } + } + + return left; + } + + /** + * Parse comparison expressions + * + * @returns {Object} AST node representing the comparison expression + * @description Parses comparison expressions (=, !=, <, >, <=, >=) and + * additive expressions (+, -). All operators are translated to FunctionCall + * nodes using the corresponding combinator functions. + * + * This function implements the core of the combinator-based architecture + * by translating operator expressions to function calls that will be + * executed by the interpreter using standard library combinators. + */ + function parseExpression() { + let left = parseTerm(); + + while (current < tokens.length) { + const token = tokens[current]; + + if (process.env.DEBUG) { + console.log(`[DEBUG] parseExpression: current token = ${token.type}, value = ${token.value || 'N/A'}`); + } + + if (token.type === TokenType.PLUS || token.type === TokenType.MINUS) { + current++; + const right = parseTerm(); + left = { + type: 'FunctionCall', + name: token.type === TokenType.PLUS ? 'add' : 'subtract', + args: [left, right] + }; + } else if (token.type === TokenType.EQUALS || + token.type === TokenType.NOT_EQUAL || + token.type === TokenType.LESS_THAN || + token.type === TokenType.GREATER_THAN || + token.type === TokenType.LESS_EQUAL || + token.type === TokenType.GREATER_EQUAL) { + current++; + const right = parseTerm(); + left = { + type: 'FunctionCall', + name: token.type === TokenType.EQUALS ? 'equals' : + token.type === TokenType.NOT_EQUAL ? 'notEquals' : + token.type === TokenType.LESS_THAN ? 'lessThan' : + token.type === TokenType.GREATER_THAN ? 'greaterThan' : + token.type === TokenType.LESS_EQUAL ? 'lessEqual' : 'greaterEqual', + args: [left, right] + }; + } else { + break; + } + } + + return left; + } + + /** + * Parse multiplication and division expressions + * + * @returns {Object} AST node representing the multiplicative expression + * @description Parses multiplicative expressions (*, /, %) with higher + * precedence than additive expressions. All operators are translated to + * FunctionCall nodes using the corresponding combinator functions. + */ + function parseTerm() { + let left = parseFactor(); + + while (current < tokens.length) { + const token = tokens[current]; + + if (token.type === TokenType.MULTIPLY || + token.type === TokenType.DIVIDE || + token.type === TokenType.MODULO) { + current++; + const right = parseFactor(); + left = { + type: 'FunctionCall', + name: token.type === TokenType.MULTIPLY ? 'multiply' : + token.type === TokenType.DIVIDE ? 'divide' : 'modulo', + args: [left, right] + }; + } else { + break; + } + } + + return left; + } + + /** + * Parse power expressions and unary operators + * + * @returns {Object} AST node representing the factor expression + * @description Parses power expressions (^) and unary operators (not, -) + * with the highest precedence among operators. All operators are translated + * to FunctionCall nodes using the corresponding combinator functions. + */ + function parseFactor() { + let left = parsePrimary(); + + while (current < tokens.length) { + const token = tokens[current]; + + if (token.type === TokenType.POWER) { + current++; + const right = parsePrimary(); + left = { + type: 'FunctionCall', + name: 'power', + args: [left, right] + }; + } else { + break; + } + } + + return left; + } + + /** + * Parse table literals: {key: value, key2: value2} or {value1, value2, value3} + * + * @returns {Object} TableLiteral AST node + * @throws {Error} For malformed table literals + * @description Parses table literals with support for both key-value pairs + * and array-like entries. Tables are the primary data structure in the language. + * + * Supports: + * - Key-value pairs: {name: "Alice", age: 30} + * - Array-like entries: {1, 2, 3} + * - Mixed entries: {1, 2, name: "Alice", 3} + * + * Array-like entries are automatically assigned numeric keys starting from 1. + */ + function parseTableLiteral() { + current++; // Skip '{' + + const entries = []; + + while (current < tokens.length && tokens[current].type !== TokenType.RIGHT_BRACE) { + // Check if this is a key-value pair or just a value + let key = null; + let value; + + // Parse the first element + if (tokens[current].type === TokenType.IDENTIFIER) { + // Could be a key or a value + const identifier = tokens[current].value; + current++; + + if (current < tokens.length && tokens[current].type === TokenType.ASSIGNMENT) { + // This is a key-value pair: key : value + key = { type: 'Identifier', value: identifier }; + current++; // Skip ':' + value = parseLogicalExpression(); + } else { + // This is just a value (array-like entry) + value = { type: 'Identifier', value: identifier }; + } + } else { + // This is a value (array-like entry) + value = parseLogicalExpression(); + } + + entries.push({ key, value }); + + // Skip comma if present + if (current < tokens.length && tokens[current].type === TokenType.COMMA) { + current++; + } + } + + if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_BRACE) { + throw new Error('Expected "}" after table literal'); + } + current++; // Skip '}' + + return { + type: 'TableLiteral', + entries + }; + } + + + + /** + * Parse function calls: functionName arg1 arg2 ... + * + * @returns {Object} FunctionCall AST node + * @description Parses function calls with multiple arguments. This function + * is used by parsePrimary to detect when an identifier is followed by + * expressions that should be treated as function arguments. + * + * Function calls are detected by the presence of an identifier followed + * by expressions that are not operators. The parser uses lookahead to + * determine if an identifier should be treated as a function call. + */ + function parseFunctionCall() { + const functionName = tokens[current].value; + current++; // Skip function name + + // Parse arguments until we hit a semicolon or end of tokens + const args = []; + while (current < tokens.length && tokens[current].type !== TokenType.SEMICOLON) { + const arg = parseLogicalExpression(); + args.push(arg); + } + + return { + type: 'FunctionCall', + name: functionName, + args + }; + } + + /** + * Parse primary expressions (literals, identifiers, parenthesized expressions) + * + * @returns {Object} AST node representing the primary expression + * @throws {Error} For unexpected tokens or malformed expressions + * @description Parses the highest precedence expressions including literals, + * identifiers, function calls, table access, and parenthesized expressions. + * This is the foundation of the expression parsing hierarchy. + * + * The function implements sophisticated function call detection by looking + * for identifiers followed by expressions that could be arguments. This + * approach allows the language to support both traditional function calls + * and the ML-style function application syntax. + * + * Supports: + * - Literals: numbers, strings, booleans + * - Identifiers: variables and function names + * - Function calls: f(x, y) or f x y + * - Table access: table[key] or table.property + * - Parenthesized expressions: (x + y) + * - Unary operators: not x, -x + * - Function references: @functionName + */ + function parsePrimary() { + const token = tokens[current]; + + if (!token) { + throw new Error('Unexpected end of input'); + } + + if (process.env.DEBUG) { + console.log(`[DEBUG] parsePrimary: current token = ${token.type}, value = ${token.value || 'N/A'}`); + } + + switch (token.type) { + case TokenType.NUMBER: + current++; + return { type: 'NumberLiteral', value: token.value }; + + case TokenType.STRING: + current++; + return { type: 'StringLiteral', value: token.value }; + + case TokenType.TRUE: + current++; + return { type: 'BooleanLiteral', value: true }; + + case TokenType.FALSE: + current++; + return { type: 'BooleanLiteral', value: false }; + + case TokenType.IDENTIFIER: + const identifierValue = token.value; + current++; + + // Check for table access: identifier[key] or identifier.property + if (current < tokens.length && tokens[current].type === TokenType.LEFT_BRACKET) { + current++; // Skip '[' + const keyExpression = parseLogicalExpression(); + + if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_BRACKET) { + throw new Error('Expected "]" after table key'); + } + current++; // Skip ']' + + return { + type: 'TableAccess', + table: { type: 'Identifier', value: identifierValue }, + key: keyExpression + }; + } else if (current < tokens.length && tokens[current].type === TokenType.DOT) { + current++; // Skip '.' + + if (current >= tokens.length || tokens[current].type !== TokenType.IDENTIFIER) { + throw new Error('Expected identifier after "." in table access'); + } + + const propertyName = tokens[current].value; + current++; // Skip property name + + return { + type: 'TableAccess', + table: { type: 'Identifier', value: identifierValue }, + key: { type: 'Identifier', value: propertyName } + }; + } + + // Parse function call arguments (including parenthesized expressions) + const args = []; + while ( + current < tokens.length && + ( + tokens[current].type === TokenType.IDENTIFIER || + tokens[current].type === TokenType.NUMBER || + tokens[current].type === TokenType.STRING || + tokens[current].type === TokenType.LEFT_PAREN || + tokens[current].type === TokenType.LEFT_BRACE || + tokens[current].type === TokenType.TRUE || + tokens[current].type === TokenType.FALSE || + tokens[current].type === TokenType.FUNCTION_REF || + (tokens[current].type === TokenType.MINUS && + current + 1 < tokens.length && + tokens[current + 1].type === TokenType.NUMBER) + ) + ) { + // Special case: if we see FUNCTION_REF followed by MINUS followed by NUMBER, + // parse them as separate arguments + if (tokens[current].type === TokenType.FUNCTION_REF && + current + 1 < tokens.length && tokens[current + 1].type === TokenType.MINUS && + current + 2 < tokens.length && tokens[current + 2].type === TokenType.NUMBER) { + // Parse the function reference + args.push(parsePrimary()); + // Parse the unary minus as a separate argument + args.push(parsePrimary()); + } else { + // Parse each argument as a complete expression + args.push(parseExpression()); + } + } + if (args.length > 0) { + return { + type: 'FunctionCall', + name: identifierValue, + args + }; + } + return { type: 'Identifier', value: identifierValue }; + + case TokenType.LEFT_PAREN: + current++; + if (process.env.DEBUG) { + console.log(`[DEBUG] parsePrimary: parsing LEFT_PAREN, current token = ${tokens[current].type}`); + } + const expression = parseLogicalExpression(); + if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_PAREN) { + throw new Error('Expected ")" after expression'); + } + current++; + return expression; + + case TokenType.WILDCARD: + current++; + return { type: 'WildcardPattern' }; + + case TokenType.LEFT_BRACE: + return parseTableLiteral(); + + + + case TokenType.NOT: + current++; + const operand = parsePrimary(); + return { + type: 'FunctionCall', + name: 'logicalNot', + args: [operand] + }; + + case TokenType.MINUS: + current++; + const unaryOperand = parsePrimary(); + return { + type: 'FunctionCall', + name: 'negate', + args: [unaryOperand] + }; + + case TokenType.ARROW: + current++; + const arrowBody = parseLogicalExpression(); + return { type: 'ArrowExpression', body: arrowBody }; + + case TokenType.FUNCTION_REF: + const functionRef = { type: 'FunctionReference', name: token.name }; + current++; + return functionRef; + + default: + throw new Error(`Unexpected token in parsePrimary: ${token.type}`); + } + } + + return parse(); +} \ No newline at end of file diff --git a/js/scripting-lang/parser_analysis.md b/js/scripting-lang/parser_analysis.md deleted file mode 100644 index 8a25df1..0000000 --- a/js/scripting-lang/parser_analysis.md +++ /dev/null @@ -1,143 +0,0 @@ -# Parser Implementation Analysis - -## Grammar vs Implementation Comparison - -### 1. Assignment Parsing Issue - -**Grammar Rule:** -``` -assignment = identifier ":" assignment_value -assignment_value = function_call | simple_expression -``` - -**Current Implementation Problem:** -- The parser calls `walk()` to get the value in assignments -- `walk()` consumes the function name before assignment parsing can detect it as a function call -- This causes `result : add 3 4;` to be parsed incorrectly - -**Expected Parse Tree:** -``` -assignment( - identifier("result"), - function_call("add", [number(3), number(4)]) -) -``` - -**Actual Parse Tree (from debug output):** -``` -assignment( - identifier("result"), - number(3) -) -// Plus separate nodes: number(4) -``` - -### 2. Function Call Detection - -**Grammar Rule:** -``` -function_call = identifier argument_list -argument_list = expression { expression } -``` - -**Current Implementation Issues:** -- Function call detection is in the wrong place in the parser -- Assignment parsing calls `walk()` which consumes tokens before function call detection -- The condition `tokens[current + 1].type !== TokenType.ASSIGNMENT` prevents function calls in assignments - -**Debug Evidence:** -``` -[DEBUG] Assignment parsing: { - "current": { "type": "NUMBER", "value": "3" }, - "next": { "type": "NUMBER", "value": "4" } -} -``` -The parser is already at the `3` token, meaning `add` has been consumed. - -### 3. Case Expression Parsing - -**Grammar Rule:** -``` -case_expression = "case" value_list "of" case_list -case_branch = pattern ":" result -``` - -**Current Implementation Status:** -✅ **Working correctly** - Case expressions parse and structure correctly -- Patterns are parsed correctly: `0 0`, `0 _`, `_ 0`, `_ _` -- Results are parsed correctly: string literals, numbers, identifiers -- The AST structure matches the grammar - -### 4. Arithmetic Expression Parsing - -**Grammar Rule:** -``` -arithmetic_expression = arithmetic_operator expression expression -``` - -**Current Implementation Status:** -✅ **Working correctly** - Prefix notation is handled correctly -- `+ x y` parses as `PlusExpression(left: x, right: y)` -- Operator precedence is handled correctly - -### 5. IO Statement Parsing - -**Grammar Rule:** -``` -io_statement = io_operator [ expression ] -io_operator = "..in" | "..out" -``` - -**Current Implementation Status:** -✅ **Working correctly** - IO statements parse correctly -- `..in` and `..out` are recognized as special tokens -- Expressions after `..out` are parsed correctly - -## Root Cause Analysis - -The fundamental issue is in the parser architecture: - -1. **Assignment parsing calls `walk()`** to get the value -2. **`walk()` consumes tokens** before assignment parsing can analyze them -3. **Function call detection happens too late** in the parsing process - -## Proposed Solutions - -### Solution 1: Restructure Assignment Parsing -Don't call `walk()` for assignment values. Instead, directly parse the value: - -```javascript -// Instead of: const value = walk(); -// Do: Parse value directly based on next tokens -``` - -### Solution 2: Add Function Call Detection to walk() -Make `walk()` detect function calls when it encounters an identifier followed by arguments: - -```javascript -if (token.type === TokenType.IDENTIFIER) { - // Check for function call first - if (isFunctionCall()) { - return parseFunctionCall(); - } - // Then check for assignment - if (isAssignment()) { - return parseAssignment(); - } -} -``` - -### Solution 3: Use Lookahead -Implement a lookahead mechanism to peek at tokens without consuming them: - -```javascript -function peek(n = 1) { - return tokens[current + n]; -} -``` - -## Recommended Approach - -**Solution 1** is the most straightforward. The assignment parsing should directly parse the value without calling `walk()`, allowing it to distinguish between function calls and simple expressions. - -This would fix the core issue and make the parser match the grammar specification. \ No newline at end of file diff --git a/js/scripting-lang/run_tests.sh b/js/scripting-lang/run_tests.sh new file mode 100755 index 0000000..b456ff0 --- /dev/null +++ b/js/scripting-lang/run_tests.sh @@ -0,0 +1,123 @@ +#!/bin/bash + +# Test Runner for Simple Scripting Language +# Runs unit tests and integration tests systematically + +echo "=== Simple Scripting Language Test Suite ===" +echo "" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Function to run a test +run_test() { + local test_file=$1 + local test_name=$2 + + echo -n "Running $test_name... " + + # Capture both stdout and stderr, and get the exit code + local output + local exit_code + output=$(node lang.js "$test_file" 2>&1) + exit_code=$? + + if [ $exit_code -eq 0 ]; then + echo -e "${GREEN}PASS${NC}" + return 0 + else + echo -e "${RED}FAIL${NC}" + echo -e "${RED}Error:${NC} $output" + return 1 + fi +} + +# Function to run a test with output +run_test_with_output() { + local test_file=$1 + local test_name=$2 + + echo -e "${YELLOW}=== $test_name ===${NC}" + node lang.js "$test_file" + echo "" +} + +# Counters +total_tests=0 +passed_tests=0 +failed_tests=0 + +echo "Running Unit Tests..." +echo "====================" + +# Unit tests +unit_tests=( + "tests/01_lexer_basic.txt:Basic Lexer" + "tests/02_arithmetic_operations.txt:Arithmetic Operations" + "tests/03_comparison_operators.txt:Comparison Operators" + "tests/04_logical_operators.txt:Logical Operators" + "tests/05_io_operations.txt:IO Operations" + "tests/06_function_definitions.txt:Function Definitions" + "tests/07_case_expressions.txt:Case Expressions" + "tests/08_first_class_functions.txt:First-Class Functions" + "tests/09_tables.txt:Tables" + "tests/10_standard_library.txt:Standard Library" + "tests/11_edge_cases.txt:Edge Cases" + "tests/12_advanced_tables.txt:Advanced Tables" + "tests/13_standard_library_complete.txt:Complete Standard Library" + "tests/14_error_handling.txt:Error Handling" + # "tests/15_performance_stress.txt:Performance and Stress" + # "tests/16_advanced_functional.txt:Advanced Functional Programming" + # "tests/17_real_world_scenarios.txt:Real-World Scenarios" +) + +for test in "${unit_tests[@]}"; do + IFS=':' read -r file name <<< "$test" + total_tests=$((total_tests + 1)) + + if run_test "$file" "$name"; then + passed_tests=$((passed_tests + 1)) + else + failed_tests=$((failed_tests + 1)) + fi +done + +echo "" +echo "Running Integration Tests..." +echo "===========================" + +# Integration tests +integration_tests=( + "tests/integration_01_basic_features.txt:Basic Features Integration" + "tests/integration_02_pattern_matching.txt:Pattern Matching Integration" + "tests/integration_03_functional_programming.txt:Functional Programming Integration" + "tests/integration_04_mini_case_multi_param.txt:Multi-parameter case expression at top level" +) + +for test in "${integration_tests[@]}"; do + IFS=':' read -r file name <<< "$test" + total_tests=$((total_tests + 1)) + + if run_test "$file" "$name"; then + passed_tests=$((passed_tests + 1)) + else + failed_tests=$((failed_tests + 1)) + fi +done + +echo "" +echo "=== Test Summary ===" +echo "Total tests: $total_tests" +echo -e "Passed: ${GREEN}$passed_tests${NC}" +echo -e "Failed: ${RED}$failed_tests${NC}" + +if [ $failed_tests -eq 0 ]; then + echo -e "${GREEN}All tests passed!${NC}" + exit 0 +else + echo -e "${RED}Some tests failed.${NC}" + exit 1 +fi \ No newline at end of file diff --git a/js/scripting-lang/tests/01_lexer_basic.txt b/js/scripting-lang/tests/01_lexer_basic.txt new file mode 100644 index 0000000..90693f1 --- /dev/null +++ b/js/scripting-lang/tests/01_lexer_basic.txt @@ -0,0 +1,25 @@ +/* Unit Test: Basic Lexer Functionality */ +/* Tests: Numbers, identifiers, operators, keywords */ + +/* Test numbers */ +x : 42; +y : 3.14; +z : 0; + +/* Test identifiers */ +name : "test"; +flag : true; +value : false; + +/* Test basic operators */ +sum : x + y; +diff : x - y; +prod : x * y; +quot : x / y; + +/* Test keywords */ +result : when x is + 42 then "correct" + _ then "wrong"; + +..out "Lexer basic test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/02_arithmetic_operations.txt b/js/scripting-lang/tests/02_arithmetic_operations.txt new file mode 100644 index 0000000..d4c0648 --- /dev/null +++ b/js/scripting-lang/tests/02_arithmetic_operations.txt @@ -0,0 +1,31 @@ +/* Unit Test: Arithmetic Operations */ +/* Tests: All arithmetic operators and precedence */ + +/* Basic arithmetic */ +a : 10; +b : 3; +sum : a + b; +diff : a - b; +product : a * b; +quotient : a / b; +moduloResult : a % b; +powerResult : a ^ b; + +/* Test results */ +..assert sum = 13; +..assert diff = 7; +..assert product = 30; +..assert quotient = 3.3333333333333335; +..assert moduloResult = 1; +..assert powerResult = 1000; + +/* Complex expressions with parentheses */ +complex1 : (5 + 3) * 2; +complex2 : ((10 - 2) * 3) + 1; +complex3 : (2 ^ 3) % 5; + +..assert complex1 = 16; +..assert complex2 = 25; +..assert complex3 = 3; + +..out "Arithmetic operations test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/03_comparison_operators.txt b/js/scripting-lang/tests/03_comparison_operators.txt new file mode 100644 index 0000000..f122a84 --- /dev/null +++ b/js/scripting-lang/tests/03_comparison_operators.txt @@ -0,0 +1,33 @@ +/* Unit Test: Comparison Operators */ +/* Tests: All comparison operators */ + +/* Basic comparisons */ +less : 3 < 5; +greater : 10 > 5; +equal : 5 = 5; +not_equal : 3 != 5; +less_equal : 5 <= 5; +greater_equal : 5 >= 3; + +/* Test results */ +..assert less = true; +..assert greater = true; +..assert equal = true; +..assert not_equal = true; +..assert less_equal = true; +..assert greater_equal = true; + +/* Edge cases */ +zero_less : 0 < 1; +zero_equal : 0 = 0; +zero_greater : 0 > -1; +same_less : 5 < 5; +same_greater : 5 > 5; + +..assert zero_less = true; +..assert zero_equal = true; +..assert zero_greater = true; +..assert same_less = false; +..assert same_greater = false; + +..out "Comparison operators test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/04_logical_operators.txt b/js/scripting-lang/tests/04_logical_operators.txt new file mode 100644 index 0000000..591e04b --- /dev/null +++ b/js/scripting-lang/tests/04_logical_operators.txt @@ -0,0 +1,35 @@ +/* Unit Test: Logical Operators */ +/* Tests: All logical operators */ + +/* Basic logical operations */ +and_true : 1 and 1; +and_false : 1 and 0; +or_true : 0 or 1; +or_false : 0 or 0; +xor_true : 1 xor 0; +xor_false : 1 xor 1; +not_true : not 0; +not_false : not 1; + +/* Test results */ +..assert and_true = true; +..assert and_false = false; +..assert or_true = true; +..assert or_false = false; +..assert xor_true = true; +..assert xor_false = false; +..assert not_true = true; +..assert not_false = false; + +/* Complex logical expressions */ +complex1 : 1 and 1 and 1; +complex2 : 1 or 0 or 0; +complex3 : not (1 and 0); +complex4 : (1 and 1) or (0 and 1); + +..assert complex1 = true; +..assert complex2 = true; +..assert complex3 = true; +..assert complex4 = true; + +..out "Logical operators test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/05_io_operations.txt b/js/scripting-lang/tests/05_io_operations.txt new file mode 100644 index 0000000..a16bf94 --- /dev/null +++ b/js/scripting-lang/tests/05_io_operations.txt @@ -0,0 +1,28 @@ +/* Unit Test: IO Operations */ +/* Tests: ..out, ..assert operations */ + +/* Test basic output */ +..out "Testing IO operations"; + +/* Test assertions */ +x : 5; +y : 3; +sum : x + y; + +..assert x = 5; +..assert y = 3; +..assert sum = 8; +..assert x > 3; +..assert y < 10; +..assert sum != 0; + +/* Test string comparisons */ +..assert "hello" = "hello"; +..assert "world" != "hello"; + +/* Test complex assertions */ +..assert (x + y) = 8; +..assert (x * y) = 15; +..assert (x > y) = true; + +..out "IO operations test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/06_function_definitions.txt b/js/scripting-lang/tests/06_function_definitions.txt new file mode 100644 index 0000000..a34da72 --- /dev/null +++ b/js/scripting-lang/tests/06_function_definitions.txt @@ -0,0 +1,32 @@ +/* Unit Test: Function Definitions */ +/* Tests: Function syntax, parameters, calls */ + +/* Basic function definitions */ +add_func : x y -> x + y; +multiply_func : x y -> x * y; +double_func : x -> x * 2; +square_func : x -> x * x; +identity_func : x -> x; + +/* Test function calls */ +result1 : add_func 3 4; +result2 : multiply_func 5 6; +result3 : double_func 8; +result4 : square_func 4; +result5 : identity_func 42; + +/* Test results */ +..assert result1 = 7; +..assert result2 = 30; +..assert result3 = 16; +..assert result4 = 16; +..assert result5 = 42; + +/* Test function calls with parentheses */ +result6 : add_func (3 + 2) (4 + 1); +result7 : multiply_func (double_func 3) (square_func 2); + +..assert result6 = 10; +..assert result7 = 24; + +..out "Function definitions test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/07_case_expressions.txt b/js/scripting-lang/tests/07_case_expressions.txt new file mode 100644 index 0000000..83bd1bb --- /dev/null +++ b/js/scripting-lang/tests/07_case_expressions.txt @@ -0,0 +1,47 @@ +/* Unit Test: Case Expressions */ +/* Tests: Pattern matching, wildcards, nested cases */ + +/* Basic case expressions */ +factorial : n -> + when n is + 0 then 1 + _ then n * (factorial (n - 1)); + +grade : score -> + when score is + 90 then "A" + 80 then "B" + 70 then "C" + _ then "F"; + +/* Test case expressions */ +fact5 : factorial 5; +grade1 : grade 95; +grade2 : grade 85; +grade3 : grade 65; + +/* Test results */ +..assert fact5 = 120; +..assert grade1 = "F"; /* 95 doesn't match 90, so falls through to wildcard */ +..assert grade2 = "F"; /* 85 doesn't match 80, so falls through to wildcard */ +..assert grade3 = "F"; + +/* Multi-parameter case expressions */ +compare : x y -> + when x y is + 0 0 then "both zero" + 0 _ then "x is zero" + _ 0 then "y is zero" + _ _ then "neither zero"; + +test1 : compare 0 0; +test2 : compare 0 5; +test3 : compare 5 0; +test4 : compare 5 5; + +..assert test1 = "both zero"; +..assert test2 = "x is zero"; +..assert test3 = "y is zero"; +..assert test4 = "neither zero"; + +..out "Case expressions test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/08_first_class_functions.txt b/js/scripting-lang/tests/08_first_class_functions.txt new file mode 100644 index 0000000..75fda40 --- /dev/null +++ b/js/scripting-lang/tests/08_first_class_functions.txt @@ -0,0 +1,51 @@ +/* Unit Test: First-Class Functions */ +/* Tests: Function references, higher-order functions */ + +/* Basic functions */ +double : x -> x * 2; +square : x -> x * x; +add1 : x -> x + 1; + +/* Function references */ +double_ref : @double; +square_ref : @square; +add1_ref : @add1; + +/* Test function references */ +result1 : double_ref 5; +result2 : square_ref 3; +result3 : add1_ref 10; + +..assert result1 = 10; +..assert result2 = 9; +..assert result3 = 11; + +/* Higher-order functions using standard library */ +composed : compose @double @square 3; +piped : pipe @double @square 2; +applied : apply @double 7; + +..assert composed = 18; +..assert piped = 16; +..assert applied = 14; + +/* Function references in case expressions */ +getFunction : type -> + when type is + "double" then @double + "square" then @square + _ then @add1; + +func1 : getFunction "double"; +func2 : getFunction "square"; +func3 : getFunction "unknown"; + +result4 : func1 4; +result5 : func2 4; +result6 : func3 4; + +..assert result4 = 8; +..assert result5 = 16; +..assert result6 = 5; + +..out "First-class functions test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/09_tables.txt b/js/scripting-lang/tests/09_tables.txt new file mode 100644 index 0000000..3845903 --- /dev/null +++ b/js/scripting-lang/tests/09_tables.txt @@ -0,0 +1,50 @@ +/* Unit Test: Tables */ +/* Tests: Table literals, access, mixed types */ + +/* Empty table */ +empty : {}; + +/* Array-like table */ +numbers : {1, 2, 3, 4, 5}; + +/* Key-value table */ +person : {name: "Alice", age: 30, active: true}; + +/* Mixed table */ +mixed : {1, name: "Bob", 2, active: false}; + +/* Test array access */ +first : numbers[1]; +second : numbers[2]; +last : numbers[5]; + +..assert first = 1; +..assert second = 2; +..assert last = 5; + +/* Test object access */ +name : person.name; +age : person.age; +active : person.active; + +..assert name = "Alice"; +..assert age = 30; +..assert active = true; + +/* Test mixed table access */ +first_mixed : mixed[1]; +name_mixed : mixed.name; +second_mixed : mixed[2]; + +..assert first_mixed = 1; +..assert name_mixed = "Bob"; +..assert second_mixed = 2; + +/* Test bracket notation */ +name_bracket : person["name"]; +age_bracket : person["age"]; + +..assert name_bracket = "Alice"; +..assert age_bracket = 30; + +..out "Tables test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/10_standard_library.txt b/js/scripting-lang/tests/10_standard_library.txt new file mode 100644 index 0000000..6006b59 --- /dev/null +++ b/js/scripting-lang/tests/10_standard_library.txt @@ -0,0 +1,49 @@ +/* Unit Test: Standard Library */ +/* Tests: All built-in higher-order functions */ + +/* Basic functions for testing */ +double_func : x -> x * 2; +square_func : x -> x * x; +add_func : x y -> x + y; +isPositive : x -> x > 0; + +/* Filter function - TESTING FAILING CASE */ +filtered1 : filter @isPositive 5; +filtered2 : filter @isPositive -3; + +..out "filtered1 = "; +..out filtered1; +..out "filtered2 = "; +..out filtered2; + +/* Map function */ +mapped1 : map @double_func 5; +mapped2 : map @square_func 3; + +..assert mapped1 = 10; +..assert mapped2 = 9; + +/* Compose function */ +composed : compose @double_func @square_func 3; +..assert composed = 18; + +/* Pipe function */ +piped : pipe @double_func @square_func 2; +..assert piped = 16; + +/* Apply function */ +applied : apply @double_func 7; +..assert applied = 14; + +/* Reduce and Fold functions */ +reduced : reduce @add_func 0 5; +folded : fold @add_func 0 5; + +..assert reduced = 5; +..assert folded = 5; + +/* Curry function */ +curried : curry @add_func 3 4; +..assert curried = 7; + +..out "Standard library test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/11_edge_cases.txt b/js/scripting-lang/tests/11_edge_cases.txt new file mode 100644 index 0000000..dce90e3 --- /dev/null +++ b/js/scripting-lang/tests/11_edge_cases.txt @@ -0,0 +1,50 @@ +/* Unit Test: Edge Cases and Error Conditions */ +/* Tests: Unary minus, complex expressions */ + +/* Test unary minus operations */ +negative1 : -5; +negative2 : -3.14; +negative3 : -0; + +..assert negative1 = -5; +..assert negative2 = -3.14; +..assert negative3 = 0; + +/* Test complex unary minus expressions */ +complex_negative1 : -(-5); +complex_negative2 : -(-(-3)); +complex_negative3 : -5 + 3; + +..assert complex_negative1 = 5; +..assert complex_negative2 = -3; +..assert complex_negative3 = -2; + +/* Test unary minus in function calls */ +abs : x -> when x is + x < 0 then -x + _ then x; + +abs1 : abs -5; +abs2 : abs 5; + +..assert abs1 = 5; +..assert abs2 = 5; + +/* Test complex nested expressions */ +nested1 : (1 + 2) * (3 - 4); +nested2 : ((5 + 3) * 2) - 1; +nested3 : -((2 + 3) * 4); + +..assert nested1 = -3; +..assert nested2 = 15; +..assert nested3 = -20; + +/* Test unary minus with function references */ +negate : x -> -x; +negated1 : negate 5; +negated2 : negate -3; + +..assert negated1 = -5; +..assert negated2 = 3; + +..out "Edge cases test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/12_advanced_tables.txt b/js/scripting-lang/tests/12_advanced_tables.txt new file mode 100644 index 0000000..3b2a326 --- /dev/null +++ b/js/scripting-lang/tests/12_advanced_tables.txt @@ -0,0 +1,85 @@ +/* Unit Test: Advanced Table Features */ +/* Tests: Nested tables, mixed types, array-like entries */ + +/* Nested tables */ +nested_table : { + outer: { + inner: { + value: 42 + } + } +}; + +/* Test nested access */ +nested_value1 : nested_table.outer.inner.value; +..assert nested_value1 = 42; + +/* Tables with mixed types */ +mixed_advanced : { + 1: "first", + name: "test", + nested: { + value: 100 + } +}; + +/* Test mixed access */ +first : mixed_advanced[1]; +name : mixed_advanced.name; +nested_value2 : mixed_advanced.nested.value; + +..assert first = "first"; +..assert name = "test"; +..assert nested_value2 = 100; + +/* Tables with boolean keys */ +bool_table : { + true: "yes", + false: "no" +}; + +/* Test boolean key access */ +yes : bool_table[true]; +no : bool_table[false]; + +..assert yes = "yes"; +..assert no = "no"; + +/* Tables with array-like entries and key-value pairs */ +comma_table : { + 1, 2, 3, + key: "value", + 4, 5 +}; + +/* Test comma table access */ +first_comma : comma_table[1]; +second_comma : comma_table[2]; +key_comma : comma_table.key; +fourth_comma : comma_table[4]; + +..assert first_comma = 1; +..assert second_comma = 2; +..assert key_comma = "value"; +..assert fourth_comma = 4; + +/* Tables with numeric and string keys */ +mixed_keys : { + 1: "one", + two: 2, + 3: "three", + four: 4 +}; + +/* Test mixed key access */ +one : mixed_keys[1]; +two : mixed_keys.two; +three : mixed_keys[3]; +four : mixed_keys.four; + +..assert one = "one"; +..assert two = 2; +..assert three = "three"; +..assert four = 4; + +..out "Advanced tables test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/13_standard_library_complete.txt b/js/scripting-lang/tests/13_standard_library_complete.txt new file mode 100644 index 0000000..c73396a --- /dev/null +++ b/js/scripting-lang/tests/13_standard_library_complete.txt @@ -0,0 +1,97 @@ +/* Unit Test: Complete Standard Library */ +/* Tests: All built-in higher-order functions including reduce, fold, curry */ + +/* Basic functions for testing */ +double_func : x -> x * 2; +square_func : x -> x * x; +add_func : x y -> x + y; +isPositive : x -> x > 0; +isEven : x -> x % 2 = 0; + +/* Map function */ +mapped1 : map @double_func 5; +mapped2 : map @square_func 3; + +..assert mapped1 = 10; +..assert mapped2 = 9; + +/* Compose function */ +composed : compose @double_func @square_func 3; +..assert composed = 18; + +/* Pipe function */ +piped : pipe @double_func @square_func 2; +..assert piped = 16; + +/* Apply function */ +applied : apply @double_func 7; +..assert applied = 14; + +/* Filter function */ +filtered1 : filter @isPositive 5; +filtered2 : filter @isPositive -3; + +..assert filtered1 = 5; +..assert filtered2 = 0; + +/* Reduce function */ +reduced : reduce @add_func 0 5; +..assert reduced = 5; + +/* Fold function */ +folded : fold @add_func 0 5; +..assert folded = 5; + +/* Curry function */ +curried : curry @add_func 3 4; +..assert curried = 7; + +/* Test partial application */ +compose_partial : compose @double_func @square_func; +compose_result : compose_partial 3; +..assert compose_result = 18; + +pipe_partial : pipe @double_func @square_func; +pipe_result : pipe_partial 2; +..assert pipe_result = 16; + +/* Test with negative numbers */ +negate_func : x -> -x; +negative_compose : compose @double_func @negate_func 5; +negative_pipe : pipe @negate_func @double_func 5; + +..assert negative_compose = -10; +..assert negative_pipe = -10; + +/* Test with complex functions */ +complex_func : x -> x * x + 1; +complex_compose : compose @double_func @complex_func 3; +complex_pipe : pipe @complex_func @double_func 3; + +..assert complex_compose = 20; +..assert complex_pipe = 20; + +/* Test filter with complex predicates */ +isLarge : x -> x > 10; +filtered_large : filter @isLarge 15; +filtered_small : filter @isLarge 5; + +..assert filtered_large = 15; +..assert filtered_small = 0; + +/* Test reduce with different initial values */ +multiply_func : x y -> x * y; +reduced_sum : reduce @add_func 10 5; +reduced_mult : reduce @multiply_func 1 5; + +..assert reduced_sum = 15; +..assert reduced_mult = 5; + +/* Test fold with different initial values */ +folded_sum : fold @add_func 10 5; +folded_mult : fold @multiply_func 1 5; + +..assert folded_sum = 15; +..assert folded_mult = 5; + +..out "Complete standard library test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/14_error_handling.txt b/js/scripting-lang/tests/14_error_handling.txt new file mode 100644 index 0000000..36fa9de --- /dev/null +++ b/js/scripting-lang/tests/14_error_handling.txt @@ -0,0 +1,65 @@ +/* Unit Test: Error Handling and Edge Cases */ +/* Tests: Error detection and handling */ + +/* Test valid operations first to ensure basic functionality */ +valid_test : 5 + 3; +..assert valid_test = 8; + +/* Test division by zero handling */ +/* This should be handled gracefully */ +safe_div : x y -> when y is + 0 then "division by zero" + _ then x / y; + +div_result1 : safe_div 10 2; +div_result2 : safe_div 10 0; + +..assert div_result1 = 5; +..assert div_result2 = "division by zero"; + +/* Test edge cases with proper handling */ +edge_case1 : when 0 is + 0 then "zero" + _ then "other"; + +edge_case2 : when "" is + "" then "empty string" + _ then "other"; + +edge_case3 : when false is + false then "false" + _ then "other"; + +..assert edge_case1 = "zero"; +..assert edge_case2 = "empty string"; +..assert edge_case3 = "false"; + +/* Test complex error scenarios */ +complex_error_handling : input -> when input is + input < 0 then "negative" + input = 0 then "zero" + input > 100 then "too large" + _ then "valid"; + +complex_result1 : complex_error_handling -5; +complex_result2 : complex_error_handling 0; +complex_result3 : complex_error_handling 150; +complex_result4 : complex_error_handling 50; + +..assert complex_result1 = "negative"; +..assert complex_result2 = "zero"; +..assert complex_result3 = "too large"; +..assert complex_result4 = "valid"; + +/* Test safe arithmetic operations */ +safe_add : x y -> when y is + 0 then x + _ then x + y; + +safe_result1 : safe_add 5 3; +safe_result2 : safe_add 5 0; + +..assert safe_result1 = 8; +..assert safe_result2 = 5; + +..out "Error handling test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/tests/15_performance_stress.txt b/js/scripting-lang/tests/15_performance_stress.txt new file mode 100644 index 0000000..0682d3d --- /dev/null +++ b/js/scripting-lang/tests/15_performance_stress.txt @@ -0,0 +1,131 @@ +/* Unit Test: Performance and Stress Testing */ +/* Tests: Large computations, nested functions, complex expressions */ + +/* Test large arithmetic computations */ +large_sum : 0; +large_sum : large_sum + 1; +large_sum : large_sum + 2; +large_sum : large_sum + 3; +large_sum : large_sum + 4; +large_sum : large_sum + 5; + +..assert large_sum = 15; + +/* Test nested function calls */ +nested_func1 : x -> x + 1; +nested_func2 : x -> nested_func1 x; +nested_func3 : x -> nested_func2 x; +nested_func4 : x -> nested_func3 x; +nested_func5 : x -> nested_func4 x; + +deep_nested : nested_func5 10; +..assert deep_nested = 15; + +/* Test complex mathematical expressions */ +complex_math1 : (1 + 2) * (3 + 4) - (5 + 6); +complex_math2 : ((2 ^ 3) + (4 * 5)) / (6 - 2); +complex_math3 : -((1 + 2 + 3) * (4 + 5 + 6)); + +..assert complex_math1 = 10; +..assert complex_math2 = 7; +..assert complex_math3 = -126; + +/* Test large table operations */ +large_table : {}; +large_table : {1: "one", 2: "two", 3: "three", 4: "four", 5: "five"}; +large_table : {large_table, 6: "six", 7: "seven", 8: "eight"}; + +table_size : 8; +..assert table_size = 8; + +/* Test recursive-like patterns with functions */ +accumulate : n -> when n is + 0 then 0 + _ then n + accumulate (n - 1); + +sum_10 : accumulate 10; +..assert sum_10 = 55; + +/* Test complex case expressions */ +complex_case : x -> when x is + x < 0 then "negative" + x = 0 then "zero" + x < 10 then "small" + x < 100 then "medium" + x < 1000 then "large" + _ then "huge"; + +case_test1 : complex_case -5; +case_test2 : complex_case 0; +case_test3 : complex_case 5; +case_test4 : complex_case 50; +case_test5 : complex_case 500; +case_test6 : complex_case 5000; + +..assert case_test1 = "negative"; +..assert case_test2 = "zero"; +..assert case_test3 = "small"; +..assert case_test4 = "medium"; +..assert case_test5 = "large"; +..assert case_test6 = "huge"; + +/* Test standard library with complex operations */ +double : x -> x * 2; +square : x -> x * x; +add : x y -> x + y; + +complex_std1 : compose @double @square 3; +complex_std2 : pipe @square @double 4; +complex_std3 : apply @add 5 3; + +..assert complex_std1 = 18; +..assert complex_std2 = 32; +..assert complex_std3 = 8; + +/* Test table with computed keys and nested structures */ +computed_table : { + (1 + 1): "two", + (2 * 3): "six", + (10 - 5): "five", + nested: { + (2 + 2): "four", + deep: { + (3 * 3): "nine" + } + } +}; + +computed_test1 : computed_table[2]; +computed_test2 : computed_table[6]; +computed_test3 : computed_table[5]; +computed_test4 : computed_table.nested[4]; +computed_test5 : computed_table.nested.deep[9]; + +..assert computed_test1 = "two"; +..assert computed_test2 = "six"; +..assert computed_test3 = "five"; +..assert computed_test4 = "four"; +..assert computed_test5 = "nine"; + +/* Test logical operations with complex expressions */ +complex_logic1 : (5 > 3) and (10 < 20) and (2 + 2 = 4); +complex_logic2 : (1 > 5) or (10 = 10) or (3 < 2); +complex_logic3 : not ((5 > 3) and (10 < 5)); + +..assert complex_logic1 = true; +..assert complex_logic2 = true; +..assert complex_logic3 = true; + +/* Test function composition with multiple functions */ +f1 : x -> x + 1; +f2 : x -> x * 2; +f3 : x -> x - 1; +f4 : x -> x / 2; + +composed1 : compose @f1 @f2 @f3 @f4 10; +composed2 : pipe @f4 @f3 @f2 @f1 10; + +..assert composed1 = 10; +..assert composed2 = 10; + +..out "Performance and stress test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/tests/dev_01_simple_test.txt b/js/scripting-lang/tests/dev_01_simple_test.txt new file mode 100644 index 0000000..74edad2 --- /dev/null +++ b/js/scripting-lang/tests/dev_01_simple_test.txt @@ -0,0 +1,9 @@ +/* Simple test for function call parsing */ + +factorial : n -> + when n is + 0 then 1 + _ then n * (factorial (n - 1)); + +result : factorial 5; +..out result; \ No newline at end of file diff --git a/js/scripting-lang/tests/dev_02_test_parser_changes.txt b/js/scripting-lang/tests/dev_02_test_parser_changes.txt new file mode 100644 index 0000000..a4af8bb --- /dev/null +++ b/js/scripting-lang/tests/dev_02_test_parser_changes.txt @@ -0,0 +1,35 @@ +/* Test: Parser Changes */ +/* Tests: Operator expressions are now translated to combinator calls */ + +/* Test arithmetic operations */ +result1 : 3 + 4; +result2 : 10 - 3; +result3 : 5 * 6; +result4 : 20 / 4; +result5 : -7; + +..out result1; +..out result2; +..out result3; +..out result4; +..out result5; + +/* Test comparison operations */ +test1 : 5 = 5; +test2 : 3 != 7; +test3 : 2 < 8; +test4 : 10 > 3; + +..out test1; +..out test2; +..out test3; +..out test4; + +/* Test logical operations */ +logic1 : true and true; +logic2 : false or true; +logic3 : not false; + +..out logic1; +..out logic2; +..out logic3; \ No newline at end of file diff --git a/js/scripting-lang/tests/integration_01_basic_features.txt b/js/scripting-lang/tests/integration_01_basic_features.txt new file mode 100644 index 0000000..f669f8a --- /dev/null +++ b/js/scripting-lang/tests/integration_01_basic_features.txt @@ -0,0 +1,37 @@ +/* Integration Test: Basic Language Features */ +/* Combines: arithmetic, comparisons, functions, IO */ + +..out "=== Integration Test: Basic Features ==="; + +/* Define utility functions */ +add_func : x y -> x + y; +multiply_func : x y -> x * y; +isEven : x -> x % 2 = 0; +isPositive : x -> x > 0; + +/* Test arithmetic with functions */ +sum : add_func 10 5; +product : multiply_func 4 6; +doubled : multiply_func 2 sum; + +..assert sum = 15; +..assert product = 24; +..assert doubled = 30; + +/* Test comparisons with functions */ +even_test : isEven 8; +odd_test : isEven 7; +positive_test : isPositive 5; +negative_test : isPositive -3; + +..assert even_test = true; +..assert odd_test = false; +..assert positive_test = true; +..assert negative_test = false; + +/* Test complex expressions */ +complex : add_func (multiply_func 3 4) (isEven 10 and isPositive 5); + +..assert complex = 13; + +..out "Basic features integration test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/integration_02_pattern_matching.txt b/js/scripting-lang/tests/integration_02_pattern_matching.txt new file mode 100644 index 0000000..a67bf59 --- /dev/null +++ b/js/scripting-lang/tests/integration_02_pattern_matching.txt @@ -0,0 +1,64 @@ +/* Integration Test: Pattern Matching */ +/* Combines: case expressions, functions, recursion, complex patterns */ + +..out "=== Integration Test: Pattern Matching ==="; + +/* Recursive factorial with case expressions */ +factorial : n -> + when n is + 0 then 1 + _ then n * (factorial (n - 1)); + +/* Pattern matching with multiple parameters */ +classify : x y -> + when x y is + 0 0 then "both zero" + 0 _ then "x is zero" + _ 0 then "y is zero" + _ _ then when x is + 0 then "x is zero (nested)" + _ then when y is + 0 then "y is zero (nested)" + _ then "neither zero"; + +/* Test factorial */ +fact5 : factorial 5; +fact3 : factorial 3; + +..assert fact5 = 120; +..assert fact3 = 6; + +/* Test classification */ +test1 : classify 0 0; +test2 : classify 0 5; +test3 : classify 5 0; +test4 : classify 5 5; + +..assert test1 = "both zero"; +..assert test2 = "x is zero"; +..assert test3 = "y is zero"; +..assert test4 = "neither zero"; + +/* Complex nested case expressions */ +analyze : x y z -> + when x y z is + 0 0 0 then "all zero" + 0 0 _ then "x and y zero" + 0 _ 0 then "x and z zero" + _ 0 0 then "y and z zero" + 0 _ _ then "only x zero" + _ 0 _ then "only y zero" + _ _ 0 then "only z zero" + _ _ _ then "none zero"; + +result1 : analyze 0 0 0; +result2 : analyze 0 1 1; +result3 : analyze 1 0 1; +result4 : analyze 1 1 1; + +..assert result1 = "all zero"; +..assert result2 = "only x zero"; +..assert result3 = "only y zero"; +..assert result4 = "none zero"; + +..out "Pattern matching integration test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/integration_03_functional_programming.txt b/js/scripting-lang/tests/integration_03_functional_programming.txt new file mode 100644 index 0000000..a0e3668 --- /dev/null +++ b/js/scripting-lang/tests/integration_03_functional_programming.txt @@ -0,0 +1,68 @@ +/* Integration Test: Functional Programming */ +/* Combines: first-class functions, higher-order functions, composition */ + +..out "=== Integration Test: Functional Programming ==="; + +/* Basic functions */ +double_func : x -> x * 2; +square_func : x -> x * x; +add1 : x -> x + 1; +identity_func : x -> x; +isEven : x -> x % 2 = 0; + +/* Function composition */ +composed1 : compose @double_func @square_func 3; +composed2 : compose @square_func @double_func 2; +composed3 : compose @add1 @double_func 5; + +..assert composed1 = 18; +..assert composed2 = 16; +..assert composed3 = 11; + +/* Function piping */ +piped1 : pipe @double_func @square_func 3; +piped2 : pipe @square_func @double_func 2; +piped3 : pipe @add1 @double_func 5; + +..assert piped1 = 36; +..assert piped2 = 8; +..assert piped3 = 12; + +/* Function application */ +applied1 : apply @double_func 7; +applied2 : apply @square_func 4; +applied3 : apply @add1 10; + +..assert applied1 = 14; +..assert applied2 = 16; +..assert applied3 = 11; + +/* Function selection with case expressions */ +getOperation : type -> + when type is + "double" then @double_func + "square" then @square_func + "add1" then @add1 + _ then @identity_func; + +/* Test function selection */ +op1 : getOperation "double"; +op2 : getOperation "square"; +op3 : getOperation "add1"; +op4 : getOperation "unknown"; + +result1 : op1 5; +result2 : op2 4; +result3 : op3 7; +result4 : op4 3; + +..assert result1 = 10; +..assert result2 = 16; +..assert result3 = 8; +..assert result4 = 3; + +/* Complex functional composition */ +complex : compose @double_func (compose @square_func @add1) 3; +..assert complex = 32; + +..out "Functional programming integration test completed"; \ No newline at end of file diff --git a/js/scripting-lang/tests/integration_04_mini_case_multi_param.txt b/js/scripting-lang/tests/integration_04_mini_case_multi_param.txt new file mode 100644 index 0000000..279676d --- /dev/null +++ b/js/scripting-lang/tests/integration_04_mini_case_multi_param.txt @@ -0,0 +1,17 @@ +/* Multi-parameter case expression at top level */ +x : 1; +y : 2; +result1 : when x y is + 1 2 then "matched" + _ _ then "not matched"; + +/* Multi-parameter case expression inside a function */ +f : a b -> when a b is + 1 2 then "matched" + _ _ then "not matched"; +result2 then f 1 2; +result3 then f 3 4; + +..out result1; +..out result2; +..out result3; \ No newline at end of file |