Fossil SCM
Requesting Fossil 2.3 release just after the Unicode 10.0 release (expected around june 20, 2017). If earlier, please revert commit [09bcc322f7bcf52f|09bcc322f7] first.
Commit
6fe0d689141df56fc2374934a9dc6b8948ad1f511895e8613374c442f6082cf3
Parent
55e2487585d96d6…
2 files changed
+1
-1
+15
-15
+1
-1
| --- www/changes.wiki | ||
| +++ www/changes.wiki | ||
| @@ -1,9 +1,9 @@ | ||
| 1 | 1 | <title>Change Log</title> |
| 2 | 2 | |
| 3 | 3 | <a name='v2_3'></a> |
| 4 | -<h2>Changes for Version 2.3 (2017-05-??)</h2> | |
| 4 | +<h2>Changes for Version 2.3 (2017-06-??, preferably just after the Unicode 10 release)</h2> | |
| 5 | 5 | |
| 6 | 6 | * Update the built-in SQLite to version 3.19.2. |
| 7 | 7 | * Update internal Unicode character tables, used in regular expression |
| 8 | 8 | handling, from version 9.0 to 10.0. |
| 9 | 9 | * Show the last-sync-URL on the [/help?cmd=/urllist|/urllist] page. |
| 10 | 10 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -1,9 +1,9 @@ | |
| 1 | <title>Change Log</title> |
| 2 | |
| 3 | <a name='v2_3'></a> |
| 4 | <h2>Changes for Version 2.3 (2017-05-??)</h2> |
| 5 | |
| 6 | * Update the built-in SQLite to version 3.19.2. |
| 7 | * Update internal Unicode character tables, used in regular expression |
| 8 | handling, from version 9.0 to 10.0. |
| 9 | * Show the last-sync-URL on the [/help?cmd=/urllist|/urllist] page. |
| 10 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -1,9 +1,9 @@ | |
| 1 | <title>Change Log</title> |
| 2 | |
| 3 | <a name='v2_3'></a> |
| 4 | <h2>Changes for Version 2.3 (2017-06-??, preferably just after the Unicode 10 release)</h2> |
| 5 | |
| 6 | * Update the built-in SQLite to version 3.19.2. |
| 7 | * Update internal Unicode character tables, used in regular expression |
| 8 | handling, from version 9.0 to 10.0. |
| 9 | * Show the last-sync-URL on the [/help?cmd=/urllist|/urllist] page. |
| 10 |
+15
-15
| --- www/globs.md | ||
| +++ www/globs.md | ||
| @@ -2,11 +2,11 @@ | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | A [glob pattern][glob] is a text expression that matches one or more |
| 5 | 5 | file names using wild cards familiar to most users of a command line. |
| 6 | 6 | For example, `*` is a glob that matches any name at all and |
| 7 | -`Readme.txt` is a glob that matches exactly one file. | |
| 7 | +`Readme.txt` is a glob that matches exactly one file. | |
| 8 | 8 | |
| 9 | 9 | Note that although both are notations for describing patterns in text, |
| 10 | 10 | glob patterns are not the same thing as a [regular expression or |
| 11 | 11 | regexp][regexp]. |
| 12 | 12 | |
| @@ -39,14 +39,14 @@ | ||
| 39 | 39 | matches. |
| 40 | 40 | |
| 41 | 41 | A glob pattern is a collection of characters compared to a target |
| 42 | 42 | text, usually a file name. The whole glob is said to match if it |
| 43 | 43 | successfully consumes and matches the entire target text. Glob |
| 44 | -patterns are made up of ordinary characters and special characters. | |
| 44 | +patterns are made up of ordinary characters and special characters. | |
| 45 | 45 | |
| 46 | 46 | Ordinary characters consume a single character of the target and must |
| 47 | -match it exactly. | |
| 47 | +match it exactly. | |
| 48 | 48 | |
| 49 | 49 | Special characters (and special character sequences) consume zero or |
| 50 | 50 | more characters from the target and describe what matches. The special |
| 51 | 51 | characters (and sequences) are: |
| 52 | 52 | |
| @@ -53,21 +53,21 @@ | ||
| 53 | 53 | * `*` Matches any sequence of zero or more characters; |
| 54 | 54 | * `?` Matches exactly one character; |
| 55 | 55 | * `[...]` Matches one character from the enclosed list of characters; and |
| 56 | 56 | * `[^...]` Matches one character not in the enclosed list. |
| 57 | 57 | |
| 58 | -Special character sequences have some additional features: | |
| 58 | +Special character sequences have some additional features: | |
| 59 | 59 | |
| 60 | 60 | * A range of characters may be specified with `-`, so `[a-d]` matches |
| 61 | 61 | exactly the same characters as `[abcd]`. Ranges reflect Unicode |
| 62 | 62 | code points without any locale-specific collation sequence. |
| 63 | 63 | * Include `-` in a list by placing it last, just before the `]`. |
| 64 | 64 | * Include `]` in a list by making the first character after the `[` or |
| 65 | - `[^`. At any other place, `]` ends the list. | |
| 65 | + `[^`. At any other place, `]` ends the list. | |
| 66 | 66 | * Include `^` in a list by placing anywhere except first after the |
| 67 | 67 | `[`. |
| 68 | - * Beware that ranges in lists may include more than you expect: | |
| 68 | + * Beware that ranges in lists may include more than you expect: | |
| 69 | 69 | `[A-z]` Matches `A` and `Z`, but also matches `a` and some less |
| 70 | 70 | obvious characters such as `[`, `\`, and `]` with code point |
| 71 | 71 | values between `Z` and `a`. |
| 72 | 72 | * Beware that a range must be specified from low value to high |
| 73 | 73 | value: `[z-a]` does not match any character at all, preventing the |
| @@ -75,15 +75,15 @@ | ||
| 75 | 75 | * Note that unlike typical Unix shell globs, wildcards (`*`, `?`, |
| 76 | 76 | and character lists) are allowed to match `/` directory |
| 77 | 77 | separators as well as the initial `.` in the name of a hidden |
| 78 | 78 | file or directory. |
| 79 | 79 | |
| 80 | -Some examples of character lists: | |
| 80 | +Some examples of character lists: | |
| 81 | 81 | |
| 82 | 82 | * `[a-d]` Matches any one of `a`, `b`, `c`, or `d` but not `ä`; |
| 83 | 83 | * `[^a-d]` Matches exactly one character other than `a`, `b`, `c`, |
| 84 | - or `d`; | |
| 84 | + or `d`; | |
| 85 | 85 | * `[0-9a-fA-F]` Matches exactly one hexadecimal digit; |
| 86 | 86 | * `[a-]` Matches either `a` or `-`; |
| 87 | 87 | * `[][]` Matches either `]` or `[`; |
| 88 | 88 | * `[^]]` Matches exactly one character other than `]`; |
| 89 | 89 | * `[]^]` Matches either `]` or `^`; and |
| @@ -90,11 +90,11 @@ | ||
| 90 | 90 | * `[^-]` Matches exactly one character other than `-`. |
| 91 | 91 | |
| 92 | 92 | White space means the specific ASCII characters TAB, LF, VT, FF, CR, |
| 93 | 93 | and SPACE. Note that this does not include any of the many additional |
| 94 | 94 | spacing characters available in Unicode, and specifically does not |
| 95 | -include U+00A0 NO-BREAK SPACE. | |
| 95 | +include U+00A0 NO-BREAK SPACE. | |
| 96 | 96 | |
| 97 | 97 | Because both LF and CR are white space and leading and trailing spaces |
| 98 | 98 | are stripped from each glob in a list, a list of globs may be broken |
| 99 | 99 | into lines between globs when the list is stored in a file (as for a |
| 100 | 100 | versioned setting). |
| @@ -126,15 +126,15 @@ | ||
| 126 | 126 | sensitive. However, most Windows file systems are case preserving and |
| 127 | 127 | case insensitive. That is, on Windows, the names `ReadMe` and `README` |
| 128 | 128 | are names of the same file; on Unix they are different files. |
| 129 | 129 | |
| 130 | 130 | Some example cases: |
| 131 | - | |
| 131 | + | |
| 132 | 132 | * The glob `README` matches only a file named `README` in the root of |
| 133 | 133 | the tree. It does not match a file named `src/README` because it |
| 134 | 134 | does not include any characters that consume (and match) the |
| 135 | - `src/` part. | |
| 135 | + `src/` part. | |
| 136 | 136 | * The glob `*/README` does match `src/README`. Unlike Unix file |
| 137 | 137 | globs, it also matches `src/library/README`. However it does not |
| 138 | 138 | match the file `README` in the root of the tree. |
| 139 | 139 | * The glob `*README` does match `src/README` as well as the file |
| 140 | 140 | `README` in the root of the tree as well as `foo/bar/README` or |
| @@ -193,11 +193,11 @@ | ||
| 193 | 193 | * [`addremove`][] |
| 194 | 194 | * [`changes`][] |
| 195 | 195 | * [`clean`][] |
| 196 | 196 | * [`extras`][] |
| 197 | 197 | * [`merge`][] |
| 198 | - * [`settings`][] | |
| 198 | + * [`settings`][] | |
| 199 | 199 | * [`status`][] |
| 200 | 200 | * [`unset`][] |
| 201 | 201 | |
| 202 | 202 | The commands [`tarball`][] and [`zip`][] produce compressed archives of a |
| 203 | 203 | specific checkin. They may be further restricted by options that |
| @@ -464,11 +464,11 @@ | ||
| 464 | 464 | `.fossil-settings/ignore-glob` may be possible in many cases. Here are |
| 465 | 465 | some of features of `.gitignore` and comments on how they relate to |
| 466 | 466 | fossil: |
| 467 | 467 | |
| 468 | 468 | * "A blank line matches no files..." is the same in fossil. |
| 469 | - * "A line starting with # serves as a comment...." not in fossil. | |
| 469 | + * "A line starting with # serves as a comment...." not in fossil. | |
| 470 | 470 | * "Trailing spaces are ignored unless they are quoted..." is similar |
| 471 | 471 | in fossil. All whitespace before and after a glob is trimmed in |
| 472 | 472 | fossil unless quoted with single or double quotes. Git uses |
| 473 | 473 | backslash quoting instead, which fossil does not. |
| 474 | 474 | * "An optional prefix "!" which negates the pattern..." not in |
| @@ -533,8 +533,8 @@ | ||
| 533 | 533 | [SQLite] (https://sqlite.org/lang_expr.html#like) is useful. Of |
| 534 | 534 | course, the SQLite source code and test harnesses also make |
| 535 | 535 | entertaining reading: |
| 536 | 536 | |
| 537 | 537 | * `src/func.c` [lines 570-768] |
| 538 | - (https://www.sqlite.org/src/artifact?name=9d52522cc8ae7f5c&ln=570-768) | |
| 538 | + (https://www.sqlite.org/src/artifact?name=9d52522cc8ae7f5c&ln=570-768) | |
| 539 | 539 | * `test/expr.test` [lines 586-673] |
| 540 | - (https://www.sqlite.org/src/artifact?name=66a2c9ac34f74f03&ln=586-673) | |
| 540 | + (https://www.sqlite.org/src/artifact?name=66a2c9ac34f74f03&ln=586-673) | |
| 541 | 541 |
| --- www/globs.md | |
| +++ www/globs.md | |
| @@ -2,11 +2,11 @@ | |
| 2 | |
| 3 | |
| 4 | A [glob pattern][glob] is a text expression that matches one or more |
| 5 | file names using wild cards familiar to most users of a command line. |
| 6 | For example, `*` is a glob that matches any name at all and |
| 7 | `Readme.txt` is a glob that matches exactly one file. |
| 8 | |
| 9 | Note that although both are notations for describing patterns in text, |
| 10 | glob patterns are not the same thing as a [regular expression or |
| 11 | regexp][regexp]. |
| 12 | |
| @@ -39,14 +39,14 @@ | |
| 39 | matches. |
| 40 | |
| 41 | A glob pattern is a collection of characters compared to a target |
| 42 | text, usually a file name. The whole glob is said to match if it |
| 43 | successfully consumes and matches the entire target text. Glob |
| 44 | patterns are made up of ordinary characters and special characters. |
| 45 | |
| 46 | Ordinary characters consume a single character of the target and must |
| 47 | match it exactly. |
| 48 | |
| 49 | Special characters (and special character sequences) consume zero or |
| 50 | more characters from the target and describe what matches. The special |
| 51 | characters (and sequences) are: |
| 52 | |
| @@ -53,21 +53,21 @@ | |
| 53 | * `*` Matches any sequence of zero or more characters; |
| 54 | * `?` Matches exactly one character; |
| 55 | * `[...]` Matches one character from the enclosed list of characters; and |
| 56 | * `[^...]` Matches one character not in the enclosed list. |
| 57 | |
| 58 | Special character sequences have some additional features: |
| 59 | |
| 60 | * A range of characters may be specified with `-`, so `[a-d]` matches |
| 61 | exactly the same characters as `[abcd]`. Ranges reflect Unicode |
| 62 | code points without any locale-specific collation sequence. |
| 63 | * Include `-` in a list by placing it last, just before the `]`. |
| 64 | * Include `]` in a list by making the first character after the `[` or |
| 65 | `[^`. At any other place, `]` ends the list. |
| 66 | * Include `^` in a list by placing anywhere except first after the |
| 67 | `[`. |
| 68 | * Beware that ranges in lists may include more than you expect: |
| 69 | `[A-z]` Matches `A` and `Z`, but also matches `a` and some less |
| 70 | obvious characters such as `[`, `\`, and `]` with code point |
| 71 | values between `Z` and `a`. |
| 72 | * Beware that a range must be specified from low value to high |
| 73 | value: `[z-a]` does not match any character at all, preventing the |
| @@ -75,15 +75,15 @@ | |
| 75 | * Note that unlike typical Unix shell globs, wildcards (`*`, `?`, |
| 76 | and character lists) are allowed to match `/` directory |
| 77 | separators as well as the initial `.` in the name of a hidden |
| 78 | file or directory. |
| 79 | |
| 80 | Some examples of character lists: |
| 81 | |
| 82 | * `[a-d]` Matches any one of `a`, `b`, `c`, or `d` but not `ä`; |
| 83 | * `[^a-d]` Matches exactly one character other than `a`, `b`, `c`, |
| 84 | or `d`; |
| 85 | * `[0-9a-fA-F]` Matches exactly one hexadecimal digit; |
| 86 | * `[a-]` Matches either `a` or `-`; |
| 87 | * `[][]` Matches either `]` or `[`; |
| 88 | * `[^]]` Matches exactly one character other than `]`; |
| 89 | * `[]^]` Matches either `]` or `^`; and |
| @@ -90,11 +90,11 @@ | |
| 90 | * `[^-]` Matches exactly one character other than `-`. |
| 91 | |
| 92 | White space means the specific ASCII characters TAB, LF, VT, FF, CR, |
| 93 | and SPACE. Note that this does not include any of the many additional |
| 94 | spacing characters available in Unicode, and specifically does not |
| 95 | include U+00A0 NO-BREAK SPACE. |
| 96 | |
| 97 | Because both LF and CR are white space and leading and trailing spaces |
| 98 | are stripped from each glob in a list, a list of globs may be broken |
| 99 | into lines between globs when the list is stored in a file (as for a |
| 100 | versioned setting). |
| @@ -126,15 +126,15 @@ | |
| 126 | sensitive. However, most Windows file systems are case preserving and |
| 127 | case insensitive. That is, on Windows, the names `ReadMe` and `README` |
| 128 | are names of the same file; on Unix they are different files. |
| 129 | |
| 130 | Some example cases: |
| 131 | |
| 132 | * The glob `README` matches only a file named `README` in the root of |
| 133 | the tree. It does not match a file named `src/README` because it |
| 134 | does not include any characters that consume (and match) the |
| 135 | `src/` part. |
| 136 | * The glob `*/README` does match `src/README`. Unlike Unix file |
| 137 | globs, it also matches `src/library/README`. However it does not |
| 138 | match the file `README` in the root of the tree. |
| 139 | * The glob `*README` does match `src/README` as well as the file |
| 140 | `README` in the root of the tree as well as `foo/bar/README` or |
| @@ -193,11 +193,11 @@ | |
| 193 | * [`addremove`][] |
| 194 | * [`changes`][] |
| 195 | * [`clean`][] |
| 196 | * [`extras`][] |
| 197 | * [`merge`][] |
| 198 | * [`settings`][] |
| 199 | * [`status`][] |
| 200 | * [`unset`][] |
| 201 | |
| 202 | The commands [`tarball`][] and [`zip`][] produce compressed archives of a |
| 203 | specific checkin. They may be further restricted by options that |
| @@ -464,11 +464,11 @@ | |
| 464 | `.fossil-settings/ignore-glob` may be possible in many cases. Here are |
| 465 | some of features of `.gitignore` and comments on how they relate to |
| 466 | fossil: |
| 467 | |
| 468 | * "A blank line matches no files..." is the same in fossil. |
| 469 | * "A line starting with # serves as a comment...." not in fossil. |
| 470 | * "Trailing spaces are ignored unless they are quoted..." is similar |
| 471 | in fossil. All whitespace before and after a glob is trimmed in |
| 472 | fossil unless quoted with single or double quotes. Git uses |
| 473 | backslash quoting instead, which fossil does not. |
| 474 | * "An optional prefix "!" which negates the pattern..." not in |
| @@ -533,8 +533,8 @@ | |
| 533 | [SQLite] (https://sqlite.org/lang_expr.html#like) is useful. Of |
| 534 | course, the SQLite source code and test harnesses also make |
| 535 | entertaining reading: |
| 536 | |
| 537 | * `src/func.c` [lines 570-768] |
| 538 | (https://www.sqlite.org/src/artifact?name=9d52522cc8ae7f5c&ln=570-768) |
| 539 | * `test/expr.test` [lines 586-673] |
| 540 | (https://www.sqlite.org/src/artifact?name=66a2c9ac34f74f03&ln=586-673) |
| 541 |
| --- www/globs.md | |
| +++ www/globs.md | |
| @@ -2,11 +2,11 @@ | |
| 2 | |
| 3 | |
| 4 | A [glob pattern][glob] is a text expression that matches one or more |
| 5 | file names using wild cards familiar to most users of a command line. |
| 6 | For example, `*` is a glob that matches any name at all and |
| 7 | `Readme.txt` is a glob that matches exactly one file. |
| 8 | |
| 9 | Note that although both are notations for describing patterns in text, |
| 10 | glob patterns are not the same thing as a [regular expression or |
| 11 | regexp][regexp]. |
| 12 | |
| @@ -39,14 +39,14 @@ | |
| 39 | matches. |
| 40 | |
| 41 | A glob pattern is a collection of characters compared to a target |
| 42 | text, usually a file name. The whole glob is said to match if it |
| 43 | successfully consumes and matches the entire target text. Glob |
| 44 | patterns are made up of ordinary characters and special characters. |
| 45 | |
| 46 | Ordinary characters consume a single character of the target and must |
| 47 | match it exactly. |
| 48 | |
| 49 | Special characters (and special character sequences) consume zero or |
| 50 | more characters from the target and describe what matches. The special |
| 51 | characters (and sequences) are: |
| 52 | |
| @@ -53,21 +53,21 @@ | |
| 53 | * `*` Matches any sequence of zero or more characters; |
| 54 | * `?` Matches exactly one character; |
| 55 | * `[...]` Matches one character from the enclosed list of characters; and |
| 56 | * `[^...]` Matches one character not in the enclosed list. |
| 57 | |
| 58 | Special character sequences have some additional features: |
| 59 | |
| 60 | * A range of characters may be specified with `-`, so `[a-d]` matches |
| 61 | exactly the same characters as `[abcd]`. Ranges reflect Unicode |
| 62 | code points without any locale-specific collation sequence. |
| 63 | * Include `-` in a list by placing it last, just before the `]`. |
| 64 | * Include `]` in a list by making the first character after the `[` or |
| 65 | `[^`. At any other place, `]` ends the list. |
| 66 | * Include `^` in a list by placing anywhere except first after the |
| 67 | `[`. |
| 68 | * Beware that ranges in lists may include more than you expect: |
| 69 | `[A-z]` Matches `A` and `Z`, but also matches `a` and some less |
| 70 | obvious characters such as `[`, `\`, and `]` with code point |
| 71 | values between `Z` and `a`. |
| 72 | * Beware that a range must be specified from low value to high |
| 73 | value: `[z-a]` does not match any character at all, preventing the |
| @@ -75,15 +75,15 @@ | |
| 75 | * Note that unlike typical Unix shell globs, wildcards (`*`, `?`, |
| 76 | and character lists) are allowed to match `/` directory |
| 77 | separators as well as the initial `.` in the name of a hidden |
| 78 | file or directory. |
| 79 | |
| 80 | Some examples of character lists: |
| 81 | |
| 82 | * `[a-d]` Matches any one of `a`, `b`, `c`, or `d` but not `ä`; |
| 83 | * `[^a-d]` Matches exactly one character other than `a`, `b`, `c`, |
| 84 | or `d`; |
| 85 | * `[0-9a-fA-F]` Matches exactly one hexadecimal digit; |
| 86 | * `[a-]` Matches either `a` or `-`; |
| 87 | * `[][]` Matches either `]` or `[`; |
| 88 | * `[^]]` Matches exactly one character other than `]`; |
| 89 | * `[]^]` Matches either `]` or `^`; and |
| @@ -90,11 +90,11 @@ | |
| 90 | * `[^-]` Matches exactly one character other than `-`. |
| 91 | |
| 92 | White space means the specific ASCII characters TAB, LF, VT, FF, CR, |
| 93 | and SPACE. Note that this does not include any of the many additional |
| 94 | spacing characters available in Unicode, and specifically does not |
| 95 | include U+00A0 NO-BREAK SPACE. |
| 96 | |
| 97 | Because both LF and CR are white space and leading and trailing spaces |
| 98 | are stripped from each glob in a list, a list of globs may be broken |
| 99 | into lines between globs when the list is stored in a file (as for a |
| 100 | versioned setting). |
| @@ -126,15 +126,15 @@ | |
| 126 | sensitive. However, most Windows file systems are case preserving and |
| 127 | case insensitive. That is, on Windows, the names `ReadMe` and `README` |
| 128 | are names of the same file; on Unix they are different files. |
| 129 | |
| 130 | Some example cases: |
| 131 | |
| 132 | * The glob `README` matches only a file named `README` in the root of |
| 133 | the tree. It does not match a file named `src/README` because it |
| 134 | does not include any characters that consume (and match) the |
| 135 | `src/` part. |
| 136 | * The glob `*/README` does match `src/README`. Unlike Unix file |
| 137 | globs, it also matches `src/library/README`. However it does not |
| 138 | match the file `README` in the root of the tree. |
| 139 | * The glob `*README` does match `src/README` as well as the file |
| 140 | `README` in the root of the tree as well as `foo/bar/README` or |
| @@ -193,11 +193,11 @@ | |
| 193 | * [`addremove`][] |
| 194 | * [`changes`][] |
| 195 | * [`clean`][] |
| 196 | * [`extras`][] |
| 197 | * [`merge`][] |
| 198 | * [`settings`][] |
| 199 | * [`status`][] |
| 200 | * [`unset`][] |
| 201 | |
| 202 | The commands [`tarball`][] and [`zip`][] produce compressed archives of a |
| 203 | specific checkin. They may be further restricted by options that |
| @@ -464,11 +464,11 @@ | |
| 464 | `.fossil-settings/ignore-glob` may be possible in many cases. Here are |
| 465 | some of features of `.gitignore` and comments on how they relate to |
| 466 | fossil: |
| 467 | |
| 468 | * "A blank line matches no files..." is the same in fossil. |
| 469 | * "A line starting with # serves as a comment...." not in fossil. |
| 470 | * "Trailing spaces are ignored unless they are quoted..." is similar |
| 471 | in fossil. All whitespace before and after a glob is trimmed in |
| 472 | fossil unless quoted with single or double quotes. Git uses |
| 473 | backslash quoting instead, which fossil does not. |
| 474 | * "An optional prefix "!" which negates the pattern..." not in |
| @@ -533,8 +533,8 @@ | |
| 533 | [SQLite] (https://sqlite.org/lang_expr.html#like) is useful. Of |
| 534 | course, the SQLite source code and test harnesses also make |
| 535 | entertaining reading: |
| 536 | |
| 537 | * `src/func.c` [lines 570-768] |
| 538 | (https://www.sqlite.org/src/artifact?name=9d52522cc8ae7f5c&ln=570-768) |
| 539 | * `test/expr.test` [lines 586-673] |
| 540 | (https://www.sqlite.org/src/artifact?name=66a2c9ac34f74f03&ln=586-673) |
| 541 |