Page 6 of 149

Re: Pattern viewer for forum threads

Posted: November 13th, 2015, 8:55 pm
by gmc_nxtman
Here is an example:

Code: Select all

x = 4, y = 5, rule = 125/36
2bo2$obo$o2bo$o!
The pattern explodes instead of running as a 2x2 crawler in B36/S125, because it runs in B125/S36.

Re: Pattern viewer for forum threads

Posted: November 13th, 2015, 9:04 pm
by rowett
Build 163 is now live on conwaylife.com

Enhancements since the last released build:
  • added [R]History support which extends LifeHistory features to any supported Life-like rule
    • implemented [R]History state 6 execution
  • added AutoFit capability
    • added new button (top left) to toggle AutoFit
    • added hotkey shift and "f" to toggle AutoFit
    • notification displayed when AutoFit switched on or off
    • ZOOM and pan controls are locked when AutoFit is on
    • notification displayed when AutoFit on and ZOOM or pan change attempted via hotkeys, mouse wheel, or drag
  • improved ZOOM
    • extended minimum ZOOM from 0.25x (-4x) to 0.0625x (-16x) and adjusted how zoom values are displayed
    • much faster rendering with ZOOM < 1
    • ZOOM via hotkeys is now centered around cell under mouse pointer
  • UI updates
    • made the Zoom control always available at the top of the window
    • added Fit Zoom control
    • added toggle button for Grid Lines display
    • hide the AutoFit, Fit Zoom, Zoom and Grid Lines controls when help is displayed
    • moved timing information (hotkey "t") so it no longer overlaps Help control
    • increased the height of the standalone Viewer so the area without UI controls is square
    • background drag now scrolls help information and error list when displayed
  • hotkey updates
    • shift and hotkey "." or "," will rotate left or right in 90 degree steps
    • shift and hotkey "[" or "]" will zoom in or out by a factor of 2
    • shift and hotkey "e" will set STEP to maximum (32)
    • shift and hotkey "d" will set STEP to minimum (1)
    • shift and hotkey "+" will set GPS to maximum (60)
    • shift and hotkey "-" will set GPS to minimum (1)
    • if help is open then hotkey "i" will jump to information section
  • help information
    • display counts of cells in each state at pattern load
    • added colored boxes when showing colors
    • added count of color tiles
    • show when grid lines are switched on but hidden (due to non-zero ANGLE or ZOOM < 4)
    • documented the fact that "Esc" stops playback
    • [R]History rules now include state colors as well as Theme colors (since the Theme only defines states 0, 1 and 2)
  • script commands
    • added support for HTML5 color names e.g. [[ COLOR ALIVE Red ]]
    • added [[ COLOR TEXT R G B ]] to set color for waypoint messages
  • increased number and depth of STARS (hotkey "s") to support larger zoom out
  • pattern decoder now accepts well know rule aliases (e.g. 2x2, Bugs, Gnarl, etc.)
Fixes since the last released build:
  • pattern decoders
    • corrected generations rule decoding
    • rules without B or S prefixes were being read in the wrong order
    • refuse to run [R]History patterns with an invalid number of states
    • failing to decode an invalid RLE pattern could then be marked valid by another decoder
    • made the pattern decoder less lenient on files that look like Life 1.05 but aren't
    • added support for "life" as a rule name
    • fixed a crash after failing to decode an invalid multi-state pattern
    • improved validation of rule names for RLE decoder
  • memory usage and performance
    • removed duplicate grid clears during startup
    • removed duplicate initialization during standalone Viewer creation
    • improved snapshot memory usage after reset
    • snapshot memory now dynamically grows to reduce GC
    • improved tile usage during snapshot restore and reset
    • when step back disabled do not allocate snapshot 0
    • fixed an issue with tile clear failing which caused extra tiles to be processed
    • only allocate the [R]History overlay for [R]History rule patterns that contain states >= 2
    • only allocate the [R]History state 6 bitmaps when pattern contains state 6 cells
  • [R]History pattern fit zoom failed after grid grows
  • display a more useful message when step back attempted but step back disabled with [[ NOSTEPBACK ]]
  • with multiple Viewers and more than one non-library rule the rule names were incorrectly displayed
  • corrected the highlight on UI items that are selected
  • UI library can now draw icons on simple buttons
Here is a LifeHistory pattern showcasing the state 6 support:

Code: Select all

x = 457, y = 155, rule = LifeHistory
59.3B64.B125.B$58.BFBF2B60.4BF122.3B$58.6BF.B.F.F.B.F.F.B.F.F.B.F.F.B
.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F7B5.BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.
B.F.F.B.F.F.B.FBF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F
.F.B.F.F.B.F.F3BFBF.2B2F2.3B$57.F10B.5B.5B.A4B.5B.5B.5B.26BF2BF133B$
57.24B2A2BA129BA33B2A19B$56.23BA3B2A63B3A63BABA32B4A17B$55.F23BABA67B
2A66BA30BABA2BA16B$56.23BA3B2A63B3A63BABA31BAB4A14BF3B63.F3.BF$57.24B
2A2BA129BA33B4A20B3.B59.5B$56.12B.5B.5B.A4B.5B.5B.5B.28BF116BA23B.B2C
57.6B$57.7BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.
F.F7BF3.F2B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F
.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.FBF.2BFBF3BFBF8B3A8B2C
57.7B$58.6B61.7B125.10BA7B.B57.8B$56.F.5B.F59.9B125.7B3A7B58.10B$57.
7B61.7B125.15B61.10B$56.9B59.F.5B.F123.4B.5BA6B60.11B$57.7B61.7B123.
4B2.3B3A5B61.11B$56.F7BF59.F7BF121.4B3.B3A7B61.11B$57.7B61.7B121.4B3.
3B2A2B.3B55.F.B.F.2F11B$56.F.5B.F59.9B119.4B3.8B2.F43.B.F.F.B4.BF.6BA
BA9B2A32B2A32B2A32B2A6B$57.7B61.7B119.4B3.8B44.23BA2BA7B4A30B4A30B4A
30B4A6BF$56.9B59.F.5B.F117.4B3.9B42.F24BA3BA6B2AB2A29B2AB2A29B2AB2A
29B2AB2A5B$57.7B61.7B117.4B3.4B.6B42.28BA8B2A32B2A32B2A32B2A6B$56.F7B
F59.F7BF115.4B3.4B.7B42.24BA3BA117B$57.7B61.7B115.4B3.4B2.6B44.23BA2B
A5B$56.F.5B.F59.9B113.4B3.4B3.6B47.7B.2B.F2.6B3A6B$57.7B61.2B3A2B113.
4B3.4B4.6B46.9B.F2.BF.B.F.F9B$56.9B59.F.5B.F111.4B3.4B4.8B46.7B13.F8B
$57.7B61.2ABAB2A111.4B3.4B6.8B45.6B.F13.8B$56.F7BF59.FBA3BABF109.4B3.
4B6.9B45.F2BA3B14.8B$57.7B61.2BABA2B109.4B3.4B7.9B46.B3AB14.9B$56.F.
5B.F59.3BABA3B107.4B3.4B8.10B44.B2ABAB14.8B$57.7B61.BA3BAB107.4B3.4B
9.5B2A3B42.F2.5B14.8B$56.9B59.F.5B.F105.4B3.4B10.5B2A4B28.B6.F6.7B.F
11.10B$57.7B61.7B105.4B3.4B11.11B27.5BF.2B3.B.9B12.11B$56.F7BF59.F7BF
103.4B3.4B12.12BA.2A21.24B14.8B$57.7B61.7B103.4B3.4B15.8B2.2A.A19.26B
14.7B$56.F.5B.F59.9B101.4B2.5B16.7B26.F25B14.7B$18.3B4.B31.7B61.7B
101.4B3.4B17.5B29.24BF13.8B$17.BFBF6BF28.9B59.F.5B.F99.2A2B3.4B18.5B
30.23B14.6B$17.6B.5B28.7B61.7B99.2B2A3.4B18.6B31.8B2.B.F10B14.5B$16.F
13BF25.F7BF59.F7BF97.2BAB3.4B19.7B2.4B23.10B6.B.6BF12.F.4B$16.4BA12B
24.7B61.7B97.4B3.4B19.F7BF6BF21.9B9.5B16.F.B$15.4B2A5BA5BFB22.F.5B.F
59.9B95.4B3.4B21.14B21.11B5.3B2ABA6B$14.F3BA9BA5B23.7B61.7B95.4B3.4B
21.F14B20.7BA2BF2B4.4B3A6B$14.5B2A3BA3BA3BFB22.9B59.F7BF93.4B3.4B23.
15B19.6B3A4B4.2BF2BA7B$13.7BA12B24.7B61.7B93.4B3.4B23.16B19.6BAB2A3B
5.11B$14.11B2A6B23.F7BF59.F7BF91.4B3.4B25.15B24.5B9.9B$14.B.7BF7B.B
24.7B61.7B91.4B3.4B25.F14B23.F6B.B6.10B$14.19B23.F.5B.F59.9B89.4B3.4B
27.9B.3B25.10BF.B2.8B$14.20B23.BA3BAB61.7B89.4B3.4B27.F7BF31.23B$13.B
F18B23.3BABA3B59.F7BF87.4B3.4B27.10B30.F24B$13.19BF24.2BABA2B61.7B87.
4B3.4B29.9B30.25BF$13.BF17B24.FBA3BABF59.F7BF85.4B3.4B31.7B31.25B$14.
17B26.2ABAB2A61.7B85.4B3.4B31.F7BF30.BA22B$16.F13BF25.F.5B.F59.9B83.
4B3.4B33.7B31.BA7B.B3.2B.F5B$18.5B.6B27.2B3A2B61.7B83.4B3.4B33.F7BF
31.BA5B6.F6.B$19.F6BFBFB26.9B59.F7BF81.4B3.4B35.7B32.5B2.F$21.B4.3B
28.7B61.7B81.4B3.4B35.9B32.3B$56.F7BF59.F7BF79.4B3.BA2B37.7B34.F$57.
7B61.7B79.4B3.2A2B37.F7BF$56.F.5B.F59.9B77.4B3.2B2A39.7B$57.7B61.7B
77.4B3.4B39.F7BF$56.9B59.F7BF75.4B3.4B41.7B$57.7B61.7B75.4B3.4B41.9B$
56.F7BF59.F7BF73.4B3.4B43.7B$57.7B61.7B46.F2B2A2BF19.4B3.4B43.F3BA3BF
$56.F.5B.F59.9B45.3B2A2B19.4B3.4B45.2B3A2B$57.7B61.7B46.8B.F15.4B3.4B
45.FB5ABF$56.9B59.F7BF43.12B14.4B3.4B47.BA3BAB$57.7B61.8B42.F13B12.4B
3.4B47.2A5B2A$56.F7BF.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F
.F.B.F.F.B.F9B38.3B.13BF10.4B3.4B49.BA3BA2B$55.11B.5B.5B.5B.5B.5B.5B.
4BA.5B.5B.13B37.5B.11B11.4B3.4B49.FBA3BABF$55.48BA2B2A27B37.5B.8B2.F
9.4B3.4B50.8B$54.BF48B2A3BA24B40.13B10.4B3.4B52.F6B$54.53BABA23BF41.
8B.4B8.4B3.4B53.6BF64.F$54.BF48B2A3BA23B43.7B2.4B6.4B3.4B54.7BF.B.F.F
.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F2.B.3B$55.48BA2B
2A24B45.5B.F2.4B4.4B3.4B55.F10B.5B.5B.5B.5B.5B.5B.5B.5B.5B2.7BF$57.F
7B2.5B.5B.5B.5B.5B.5B.4BA.5B.5B.10BF45.4B6.4B2.4B3.4B56.33B2A42B$59.
3B.B2.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F7B
45.4B7.8B3.4B56.33BABA41BFB$60.F64.F6B44.4B9.6B3.4B56.F32B2A45B$125.
6BF43.4B11.4B3.4B57.34BABA41BFB$125.8B41.4B11.6B.4B57.36B2A42B$124.F
7BF40.4B11.11B59.13B.5B.5B.5B.5B.5B.5B.5B.5B.5B.11B$124.8B40.4B11.4B
2.5B60.9BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.
F7BF$124.9B38.4B11.4B4.5B60.8B61.7B$125.7B38.4B11.2A2B6.4B60.F7BF59.
9B$124.F7BF36.4B11.2B2A8.4B12.B47.7B61.7B$125.7B36.4B11.2BAB10.4B10.
3B45.9B59.F.5B.F$124.F7BF34.4B11.4B12.4B9.3B46.7B61.7B$125.7B34.4B11.
4B14.4B7.4B45.F7BF59.F7BF$124.9B32.4B11.4B16.4B5.4B.F45.7B61.7B$125.
7B32.4B11.4B18.4B3.4B.3B43.F7BF59.9B$124.F7BF30.4B11.4B20.9B.6B42.7B
61.7B$125.7B30.4B11.4B22.15BF40.9B59.F.5B.F$25.F98.F2BABA2BF28.4B11.
4B24.15B41.7B61.7B$125.2B3A2B28.4B11.4B26.16B38.F7BF59.F7BF$124.3B3A
3B26.4B11.4B29.10B2A2B39.7B61.7B$20.F104.7B26.4B11.4B31.9B2A2B38.F7BF
59.9B$124.F7BF24.4B11.4B31.F2.11B39.7B61.7B$125.7B24.4B11.4B34.11B39.
9B59.F.5B.F$124.F.5B.F22.4B11.4B34.9B.F41.7B61.7B$125.7B22.4B11.4B34.
3AB.4B43.F7BF59.F7BF$124.9B20.4B11.4B34.3BA2.4BF43.7B61.7B$31.F92.10B
18.4B11.4B34.3BA2.F.2B44.F7BF59.9B$124.F7BF18.4B11.4B34.4B5.F46.7B61.
7B$125.7B18.4B11.4B34.4B52.9B59.F.5B.F$20.F9.2A92.F.5B.F16.4B11.4B34.
4B54.7B61.7B$30.2A93.7B16.4B11.4B34.4B54.F7BF59.F3BA3BF$124.9B14.4B
11.4B34.4B56.7B61.2B3A2B$75.F49.7B14.4B11.4B34.4B56.F7BF59.2BA3BA2B$
7.F23.F35.F56.F7BF12.4B11.B2DB34.4B58.7B61.B2AB2AB$2.F17.3A101.8B12.
4B11.2B2D34.4B58.9B59.F.5B.F$22.A6.F94.F7BF10.4B11.4B34.4B60.7B61.7B$
F20.A2.F42.2A9.F46.7B10.4B11.4B34.4B60.F7BF59.F7BF$67.2A55.9B8.4B11.
4B21.B12.4B62.7B61.7B$119.2B4.7B8.4B11.4B21.3B10.4B62.F.5B.F59.9B$2A
116.5B2F7BF3B3.4B11.4B22.3B9.4B64.B2AB2AB61.7B$2A9.F55.F11.F38.24B11.
4B23.4B7.4B64.2BA3BA2B59.F.5B.F$117.24B11.4B23.F.4B5.4B66.2B3A2B61.7B
$69.F13.F33.23B11.4B23.3B.4B3.4B66.F3BA3BF59.F7BF$F117.21B11.4B22.6B.
9B68.7B61.7B$73.F11.F31.23B9.4B22.F15B68.F.5B.F59.9B$118.21B9.4B23.
15B70.7B61.7B$80.A38.19B9.4B22.16B70.9B59.F.5B.F$81.A2.2A37.B.10B11.
4B23.2B2A10B73.7B61.7B$74.F4.3A2.2A40.8B11.4B24.2B2A9B73.F7BF59.F7BF$
11.F115.6B11.4B25.11B2.F73.7B61.7B$11.F115.5B11.4B27.11B74.F.5B.F59.
9B$85.F41.6B9.4B29.F.9B74.7B61.7B$126.8B7.4B33.4B.4B72.9B59.F.5B.F$
125.4B.5B6.4B21.D.D8.F4B2.4B72.7B61.7B$124.4B4.4B2.F.5B19.D5.D8.2B.F
2.4B70.F7BF59.F7BF$123.4B6.4B2.BA5B34.F5.4B70.7B61.7B$79.F42.4B8.4B.A
B2A4B16.D3.C3.D15.4B68.F.5B.F59.9B$121.4B10.4BA3BA4B18.2C19.5B35.3B
30.7B61.7B$120.4B9.F2.4BA3B.5B13.D2.C.C2.D17.4B32.7B27.9B59.F.5B.F$
119.4B11.7BA3B.5B39.4B30.10B26.7B61.7B$118.4B10.F2BA6BA3B.3B14.D5.D
20.4B.F.F.B.F.F.B.F.F.B.F.F.B.F3.12B23.F7BF59.F7BF$118.3B12.B3A9BF19.
D.D23.28B3.14B23.7B61.7B$118.2B14.AB3A7B43.B2.4BA3BA36BF21.F.5B.F59.
9B$118.B15.F.B2A6B43.2AB.3BA4BA36BF22.7B61.7B$137.BA6B43.2A6B2A39B22.
9B59.F.5B.F$136.F2BA3BF45.2B.3BA4BA38B21.7B61.6B$137.BA3B50.4BA3BA23B
4.11BF.B.F.F.B.F.F.A.F3.F7BF.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.
F.F.B.F.F.B.F.F.B.F7B$138.A3B50.28B10.13B.5B.3BA4BF28B.5B.5B.5B.5B.5B
.5B.12B$191.BF2B.F.F.B.F.F.B.F.F.B.F.F.B.F9.21B2AB2A44B2A33B$229.21B
2A48BABA33B$229.20B3A50B2A32BF$230.20B2A48BABA33B$229.F21B2AB2A44B2A
33B$230.7B.5B.5B.3BA3BF2BF26B.5B.5B.5B.5B.5B.5B.10BF$229.7BF2.F.B.F.F
.B.F.F.A.FB5.7BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.
F.B.F6B$230.5B28.F4B60.2BFBFB$231.3B31.B64.3B$232.B.F!
Here is an example of [R]History support, in this case HighLifeHistory:

Code: Select all

x = 179, y = 184, rule = B36S23History
131.4B$130.4B$129.4B$128.4B$127.4B$126.4B$125.4B$124.4B$123.4B$122.4B
$121.4B$120.4B$119.4B$118.4B$117.4B$116.4B$115.4B$114.4B$113.4B$112.
4B$111.4B$110.4B$109.4B$108.4B$107.4B$106.4B$105.4B$104.4B$103.4B$
102.4B$101.4B$100.4B$99.4B$98.4B$97.4B$96.4B$95.4B$94.4B$93.4B$92.4B$
91.4B$90.4B69.B$89.4B69.2B$88.4B69.3B$87.4B69.4B$86.4B2.B66.4B$85.4B
2.3B64.4B$84.4B2.5B62.4B$83.4B2.7B60.4B$82.4B2.9B58.4B$80.5B4.7B58.4B
$78.9B2.7B57.4B$77.19B56.4B$77.20B54.4B$77.2C20B51.4B$75.4BC16BC3B49.
4B$74.B2CB2C15B3C2B48.4B$74.B2C2B2C13B2CB2C2B46.4B$73.C6B3C10B2CB2C5B
43.4B$71.2BCBC5BCBC8B2CB2C7B41.4B$70.4B3C6BC9B3C8B40.4B$70.6B2C2B2C
12BC10B38.4B$69.2C6B2CB2C8B2.15B35.4B$67.4BC5BC4B.5B6.10BC3B33.4B$66.
B2CB2C6B2C15.8B3C2B32.4B$66.B2C2B2C6B16.7B2CB2C2B30.4B$65.C6B3C4B17.
5B2CB2C5B27.4B$63.2BCBC5BCBC2B20.2B2CB2C7B25.4B$62.4B3C6BC23.2B3C8B
24.4B$62.6B2C2B2CB24.3BC10B22.4B$61.8B2CB2CB25.15B19.4B$59.10BC4B28.
14B17.4B$58.12B2C31.13B16.4B$58.13B32.14B3.B10.4B$55.16B33.18B8.4B$
54.16B36.14BC2B6.4B$54.4C10B39.12BCBC2B4.4B$53.C2B2C9B40.18B2.4B$53.
2BC11B41.11B3C2B2.4B$52.C13B42.2BCBC10B2.4B$51.B3C5BCBC4B40.3BC2BC8B
2.4B$50.9BC4BC2B40.BC4BC4B2.B2.4B$49.4B.9B2C2B39.B2C4B2C3B4.4B$48.4B
2.5BC3B4C39.4C3BC5B2.4B$47.4B4.3B2C4B2CB39.2B2C9B.4B$46.4B2.B2.4BC4BC
B40.2BC4BC9B$45.4B2.8BC2BC3B40.4BCBC5B3CB$44.4B2.10BCBC2B42.13BC$43.
4B2.2B3C11B41.11BC2B$42.4B2.18B40.9B2C2BC$41.4B4.2BCBC12B39.10B4C$40.
4B6.2BC14B36.16B$39.4B8.18B33.16B$38.4B10.B3.14B32.13B$37.4B16.13B31.
2C12B$36.4B17.14B28.4BC10B$35.4B19.15B25.B2CB2C8B$34.4B22.10BC3B24.B
2C2B2C6B$33.4B24.8B3C2B23.C6B3C4B$32.4B25.7B2CB2C2B20.2BCBC5BCBC2B$
31.4B27.5B2CB2C5B17.4B3C6BC$30.4B30.2B2CB2C7B16.6B2C2B2CB$29.4B32.2B
3C8B15.2C6B2CB2CB$28.4B33.3BC10B6.5B.4BC5BC4B$27.4B35.15B2.8B2CB2C6B
2C$26.4B38.10BC12B2C2B2C6B$25.4B40.8B3C9BC6B3C4B$24.4B41.7B2CB2C8BCBC
5BCBC2B$23.4B43.5B2CB2C10B3C6BC$22.4B46.2B2CB2C13B2C2B2CB$21.4B48.2B
3C15B2CB2CB$20.4B49.3BC16BC4B$19.4B51.20B2C$18.4B54.20B63.E$17.4B56.
19B39.E21.3E$16.4B57.7B2.9B38.3E20.E$15.4B58.7B4.5B39.E23.2E$14.4B58.
9B2.4B41.2E19.5B$13.4B60.7B2.4B39.5B19.3B$12.4B62.5B2.4B40.3B20.5B$
11.4B64.3B2.4B40.5B19.2BC2B$10.4B66.B2.4B41.5B19.5B$9.4B69.4B42.5B19.
2BC2B$8.4B69.4B43.5B19.5B$7.4B69.4B30.E13.2BC2B19.2BC2B$6.4B69.4B31.
3E11.B3CB19.BCBCB$5.4B69.4B35.E10.2CB2C19.B3CB$4.4B69.4B35.2E10.2CB2C
15.2C2.6B2.10B$3.4B69.4B36.5B7.BCBCB15.C3.10B2C8B$2.4B69.4B39.BCB7.2B
CB13.BC.C4.4B.3BCB2C7B$.4B69.4B39.BCBCB7.3B2.C3B2C4B.B2C4.4B2.4B2C8B$
4B69.4B40.C3BC9.2BC2B5C5B5.A3B5.10B.B2E$3B69.4B41.BCBCB9.B3CBC4BC4B4.
A3B.2B14.BE.E$2B69.4B42.2BC2B7.4BC2B5C5B3.B3A.3B17.E$B69.4B43.BCBCB6.
5B.C3B2C4B4.4B.5B16.2E$69.4B44.5B5.A6B13.4B2.5B$68.4B45.B3CB4.B2AB.4B
11.4B3.2BC2B$67.4B46.5B3.BABA3.3BA9.A3B4.BCBCB$66.4B31.2E14.5B2.4B5.A
BAB7.A3B5.2CB2C$65.4B33.E14.5B.4B7.2A2B5.B3A6.2CB2C$64.4B34.E.EB12.3B
.4B9.11B7.BCBCB$63.4B36.2EB.9B2.3BA3B10.10B8.B3CB$62.4B39.4B2C10B2AB
11.10B8.5B$61.4B40.3BCB2C6B2.ABA13.3BA3B10.CBCBC$60.4B41.4B2C7B2.4B
13.BA4B11.3C$59.4B44.10B4.4B12.B3A3B10.B3CB$58.4B60.4B10.4B.4B12.2E$
57.4B62.4B8.4B3.4B11.E$56.4B64.4B6.4B5.4B11.3E$55.4B66.4B4.A3B7.4B12.
E$54.4B68.4B2.A3B9.4B$53.4B70.5B3A11.4B$52.4B58.2E12.6B13.4B$51.4B60.
E13.6B13.4B$50.4B61.E.EB11.4B.10B4.4B$49.4B63.2EB.10B.B3A5B3C4B3.4B$
48.4B66.4B2C7B.A7BCB2C3B4.4B$47.4B67.4BCBCBCBC3B.BA5B3C4B5.4B$46.4B
68.4B2C8B2.11B.B2E4.4B$45.4B71.10B5.2B9.BE.E4.4B$44.4B85.3B13.E5.4B$
43.4B86.3B13.2E5.4B$42.4B86.5B20.4B$41.4B87.5B21.4B$40.4B88.5B22.4B$
39.4B89.5B23.4B$38.4B90.2BC2B24.4B$37.4B91.BCBCB25.4B$36.4B92.C3BC26.
4B$35.4B93.BCBCB27.4B$34.4B94.B3CB28.4B$33.4B95.5B29.4B$32.4B97.3B31.
4B$31.4B98.5B30.4B$136.2E31.4B$136.E33.4B$137.3E31.4B$139.E32.4B$173.
4B$174.4B$175.4B$176.3B$177.2B$178.B!
Comments, feedback, suggestions and bug reports welcome!

Re: Pattern viewer for forum threads

Posted: November 13th, 2015, 9:06 pm
by rowett
gmc_nxtman wrote:Here is an example:

Code: Select all

x = 4, y = 5, rule = 125/36
2bo2$obo$o2bo$o!
The pattern explodes instead of running as a 2x2 crawler in B36/S125, because it runs in B125/S36.
It works fine for me. Please check you're using Build 163 (and not Build 160).

Re: Pattern viewer for forum threads

Posted: November 13th, 2015, 9:07 pm
by gmc_nxtman
Ok, now it works fine. Thanks for fixing that, and for adding the support for gray cells!

Re: Pattern viewer for forum threads

Posted: November 25th, 2015, 10:10 am
by Scorbie
@Chris
Thanks for the work so far on maintaining this project. Now I do see that maintaining anything needs some effort.
I am currently using an old netbook. And the main bottleneck of the lifeviewer here and my smartphone seems to be updating the canvas.(The speed doesn't get faster with more gps but it does get faster with xN.)
Can the "updating pattern" be considerably faster or does it depend on the speed of my browser rendering HTML5 canvas?
Not to criticize, but this implementation renders it faster. Maybe it contains some optimizations?
I don't think this small issue is worth too much effort, so don't waste too much time on this...

Re: Pattern viewer for forum threads

Posted: November 25th, 2015, 12:10 pm
by rowett
Scorbie wrote:@Chris
I am currently using an old netbook. And the main bottleneck of the lifeviewer here and my smartphone seems to be updating the canvas.(The speed doesn't get faster with more gps but it does get faster with xN.)
Can the "updating pattern" be considerably faster or does it depend on the speed of my browser rendering HTML5 canvas?
Not to criticize, but this implementation renders it faster. Maybe it contains some optimizations?
Hi Scorbie,
The implementation you linked is faster at drawing patterns that contain a small population, but slower at patterns with a large population - since in its implementation the drawing time is directly related to the number of cells that are alive or change each generation. Additionally it has a relatively small display grid (the default being 180x86 cells).

LifeViewer drawing time is constant (it's actually related to the size of the display window, which in the forum is constant). It doesn't matter how many cells are alive or changing. Nor does it matter (much) what zoom level, pan or viewing angle you have over the grid. The penalty for this design decision is that it's slower (than the implementation you reference) for small populations. The advantage is that the rendering (at least) scales incredibly well for complex patterns.

As you correctly pointed out this is a rendering issue and not a next generation computation issue. LifeViewer is probably an order of magnitude faster at next generation computation (regardless of supported rule) than the implementation you reference. This is why you can increase the STEP size (xN you reference, which is the number of generations per display update) without too much of an overall performance penalty.

I've improved the rendering speed slightly (~20% on some devices) in an upcoming build in the common case where the viewing angle is 0 and the grid doesn't need clipping to be displayed. I have a backlog item to investigate further rendering optimizations.

Thanks for the feedback, keep it coming :)

Re: Pattern viewer for forum threads

Posted: November 25th, 2015, 6:49 pm
by Scorbie
@Chris Real thanks for your analysis and thorough explanation!
rowett wrote:LifeViewer drawing time is constant (it's actually related to the size of the display window, which in the forum is constant). It doesn't matter how many cells are alive or changing. Nor does it matter (much) what zoom level, pan or viewing angle you have over the grid. The penalty for this design decision is that it's slower (than the implementation you reference) for small populations. The advantage is that the rendering (at least) scales incredibly well for complex patterns.
Huh. You're right! Why didn't I think of that! Running a really complex pattern on a small grid does not feel any slower than a small pattern. And yep, that's a good reason to keep on with the current code. Thanks a lot.
rowett wrote:LifeViewer is probably an order of magnitude faster at next generation computation (regardless of supported rule) than the implementation you reference.
Yeah, generation computation speed is real crucial or something like soup results and I'm really proud :)
rowett wrote:I've improved the rendering speed slightly (~20% on some devices) in an upcoming build in the common case where the viewing angle is 0 and the grid doesn't need clipping to be displayed. I have a backlog item to investigate further rendering optimizations.
Oh Yay! Thanks for the improvement! 20% boost in Android would eliminate the problem. In my netbook... Um... It has no hope anyway. (Sometimes it's acceptable but others, horribly slow, in case you're wondering.)

Re: Pattern viewer for forum threads

Posted: November 27th, 2015, 6:17 am
by rowett
Scorbie wrote:Can the "updating pattern" be considerably faster or does it depend on the speed of my browser rendering HTML5 canvas?
Hi Scorbie and other helpful souls,
Would you mind comparing these two builds of LifeViewer for me?
  1. Original renderer here
  2. New renderer here
Towards the top right of the LifeViewer window will be some timing information. In each case please Play the pattern so the generations are running and let me know the "work" time (e.g "work 4.5ms") over the first 700 generations. The timing statistics are per frame so you'll need to average it by inspection.
I'm looking to see if there's an improvement between the original and new renderers on your devices.
On my PC running Chrome the original gives me (roughly) a work time of 3.2ms and the new version gives me a work time of 1.4ms - which is a significant improvement, but I'm interested in whether this improvement is also seen on lower performance devices.

Re: Pattern viewer for forum threads

Posted: November 27th, 2015, 9:02 am
by Scorbie
Okay, If I got it right, I am supposed to average the "Work" (in ms) over gen 0 to gen 700, right?
Here are the results:
On my Android phone: 20~30ms -> 19~22ms
On my Netbook: About 30ms -> About 20~22ms (I tested with the default wm in my distro, Enlightenment, and Xmonad that I installed today :) They seem to be about the same.)
So I guess it's a 1.5x increase in speed? Nice :)

Just one really, really quirky thing about my Netbook, not that it's an issue to be solved by Chris, but I'm just hoping if somebody knows how to address the problem.
My netbook shows the speed above... when it's okay, but often the speed plunges abruptly for an unknown reason, to about 2~3fps or work taking about 200~300ms. conky doesn't show anything suspicious, but xmobar shows a negative memory usage during the slowdown. Wonder what may be the cause.

Maybe it's too much hoping lifeviewer for a crazy slow netbook, but thanks anyway to Chris, and you saved considerable time for avid conwaylife forum members accessing from Android.

Re: Pattern viewer for forum threads

Posted: November 27th, 2015, 10:35 am
by rowett
Scorbie wrote:Okay, If I got it right, I am supposed to average the "Work" (in ms) over gen 0 to gen 700, right?
Yes, correct.
Scorbie wrote:Here are the results:
On my Android phone: 20~30ms -> 19~22ms
On my Netbook: About 30ms -> About 20~22ms (I tested with the default wm in my distro, Enlightenment, and Xmonad that I installed today :) They seem to be about the same.)
So I guess it's a 1.5x increase in speed? Nice :)
Perfect, many thanks for the results.
Scorbie wrote:My netbook shows the speed above... when it's okay, but often the speed plunges abruptly for an unknown reason, to about 2~3fps or work taking about 200~300ms.
Would you mind sharing the specifications of your Netbook (CPU, memory, OS, browser)?

Re: Pattern viewer for forum threads

Posted: November 27th, 2015, 12:37 pm
by Scorbie
@Chris Thanks for your hard work.
Responding to your questions, the specs are:
Intel Atom CPU, and I think we bought it about 5 years ago.
1GB RAM
Bodhi Linux 32bit (Approximately Ubuntu Minimal + Enlightenment)
Pale Moon, 32bit, optimized build for Intel Atom CPU. (Basically a lighter Firefox fork, but it's still pretty heavy)
I'm not sure if this relates to the problem. When I ran your test, the CPU usage was about 40~70%, And the RAM usage was about 40%, 30% of which from Pale Moon.

Re: Pattern viewer for forum threads

Posted: November 27th, 2015, 12:59 pm
by rowett
Scorbie wrote:Pale Moon, 32bit, optimized build for Intel Atom CPU. (Basically a lighter Firefox fork, but it's still pretty heavy)
I think this might be the culprit. I installed it on my Windows PC and I'm getting a horrendous slowdown on the tests intermittently which isn't there when I use real Firefox or Chrome.

Re: Pattern viewer for forum threads

Posted: November 27th, 2015, 8:57 pm
by Scorbie
Wow. Thanks a lot for your effort. Well both firefox and chrome takes ages to start and load a page... but I guess I could use that.
EDIT: Thanks. Installed firefox and chromium to verify that both works well. (They are real slow but render LifeViewer faster, at least.)

Re: Pattern viewer for forum threads

Posted: January 11th, 2016, 9:15 am
by rowett
Build 171 is now live on conwaylife.com

Please note: you will need to refresh your browser to use the new build

Enhancements since the last released build:
  • step back function
    • step back function is now unlimited
      • step back buffer increased to 1024 generations
      • when buffer exhausted automatically compute the previous set of generations
  • performance improvements
    • much faster rendering when ANGLE = 0 and/or clipping is not required
    • improved performance when computing previous generations for step back function (hotkey "b")
    • [R]History state 6 execution is now much faster
    • modest performance improvements to boundary clear
    • only clear boundary if pattern is near the edge of the maximum grid
  • UI and Display updates
    • Layers now use dynamic ZOOM level of detail
    • better [R]History ZOOM out with priority state reordering
    • better handling for non-explosive rule patterns hitting the maximum grid boundary
    • cell coordinates under mouse cursor are displayed (when ANGLE = 0)
      • coordinates automatically display when paused and disappear during playback unless statistics are on
    • improved notification message when Pause other Viewers is used (hotkey "z")
    • area outside maximum grid size is now drawn (default grey)
    • Depth, Theme and Layers controls reordered to better match hotkey positions
    • smooth camera transitions
      • between POIs (hotkey "j")
      • when restoring saved View (hotkey "v")
      • when using Fit Zoom (hotkey "f")
      • when setting ZOOM to a multiple (hotkeys "1", "2", "3", "4", "6" and "8")
    • Fit Zoom and AutoFit controls disabled during Waypoint playback
  • hotkey updates
    • shift and hotkey "2" now sets ZOOM to -2x (used to be hotkey "5" which is now unassigned)
    • shift and hotkey "4" now sets ZOOM to -4x
    • shift and hotkey "8" now sets ZOOM to -8x
    • shift and hotkey "6" now sets ZOOM to -6x
    • shift and hotkey "z" now pauses all Viewers (unlike hotkey "z" with pauses all other Viewers)
    • shift and hotkey "v" now saves the current camera position, hotkey "v" restores camera position
    • shift and hotkey "c" sets default Theme
    • hokey "j" jumps to the next defined point of interest, shift and hotkey "j" jumps to the previous point of interest
  • script commands
    • new script command [[ POI ]] followed by one or more of [[ X ]], [[ Y ]], [[ ZOOM ]] and [[ ANGLE ]] defines a point of interest
      • optional message at each POI e.g. [[ "This is a glider" ]]
      • hotkey "j" / shift hotkey "j" to jump to next / previous point of interest
      • list of POI definitions added to help information
    • new script commands [[ XOFFSET <number> ]] and [[ YOFFSET <number> ]] to define initial pattern position on grid
    • new script command [[ SHOWGENSTATS ]] will display the generation statistics at pattern load (hotkey "g" to toggle)
    • new script command [[ SHOWTIMING ]] will display timing information at pattern load (hotkey "t" to toggle)
    • [[ AUTOFIT ]] command will now switch on AutoFit at pattern load when no Waypoints are specified
    • added custom state colours for [R]History
      • [[ COLOR <name> R G B ]] where <name> is "OFF", "ON", "HISTORY", "MARK1", "MARKOFF", "MARK2" or "KILL"
    • added [[ COLOR BOUNDARY R G B ]] to define custom boundary colour
    • [[ X ]] and [[ Y ]] script commands now allow arguments between +/- half maximum grid size rather than half current grid size
    • [[ ZOOM ]] command now accepts negative values -16 to -1 (as well as 0.0625 to 1)
  • help information
    • list of POI definitions added to help information
    • [R]History state names added to colours in help information
Fixes since the last released build:
  • pattern decoders
    • fixed an issue with the RLE pattern decoder which would ignore invalid characters in rule names
    • some invalid [R]History style rules were being marked as LifeHistory
    • RLE pattern decoder is now case-insensitive for rule names
    • RLE pattern decoder can now deal with incorrect x and y values
    • Life 1.05 pattern decoder now ignores non-standard # commands
  • general
    • hotkey ZOOM changes were resetting ANGLE to 0
    • fixed potential issue with initial grid size and large STEP sizes
    • population count at T=0 was incorrect in some rare cases
    • Fit Zoom was incorrect for [R]History patterns that had no live cells
The updated hotkey map is available here

Here is an animation based on Alexey_Nigin's excellent Happy New Year pattern that demonstrates:
  • using the XOFFSET command to place a pattern at the right hand side of the grid
  • the improved handling of patterns hitting the grid boundary
  • how Layers can be used for effects
  • some techniques for Waypoints

Code: Select all

#C Use the force, Alexey!
#C [[ XOFFSET 3520 X -650 Y 2200 ZOOM 1 ]]
#C [[ STARS GRID NOPERFWARNING ]]
#C [[ T 2 "Press PLAY to start" ]]
#C [[ COLOR BOUNDARY Black COLOR TEXT Yellow NOSTEPBACK ]]
#C [[ T 9950 STEP 16 THEME 0 X 650 ZOOM -8 "A long time ago in a galaxy far, far away...." ]]
#C [[ T 10000 STEP 1 THEME 1 LAYERS 9 DEPTH 10 ]]
#C [[ T 10500 Y -300 ]]
#C [[ T 11000 ]]
#C [[ T 11100 DEPTH 0 THEME 2 ]]
#C [[ T 11101 LAYERS 2 ]]
#C [[ T 11200 X 1070 Y 28 ZOOM 1 ANGLE 20 DEPTH 10 THEME 10 ]]
#C [[ T 12000 ]]
#C [[ T 12100 DEPTH 0 THEME 2 ]]
#C [[ T 12250 X -32 Y 0 ZOOM -12.4 ANGLE 0 DEPTH 0 THEME 0 ]]
#C [[ T 13000 ]]
#C [[ T 13100 LAYERS 1 THEME 1 ZOOM 1 X 3250 ]]
#C [[ T 14000 ]]
#C [[ T 15000 X -3764 ]]
#C [[ T 15100 ZOOM 4 THEME 0 GPS 8 ]]
#C [[ T 15190 ]]
#C [[ T 15200 ZOOM 17 THEME 6 GPS 4 ]]
#C [[ LOOP 15300 ]]
#C [[ AUTOSTART STOP 1 ]]
x = 769, y = 1109, rule = B3/S23
447b2o$447bo$436b2o7bobo$436b3o6b2o$422bo15b2obo$420bobo4b3o8bo2bo$
413b2o4bobo16b2obo$413b2o3bo2bo7bo2b2o2b3o8b2o12b2o$419bobo7bo3bo2b2o
9bo13b2o$420bobo6bo2bo12bobo$422bo8b2o12b2o2$460b3o$460b3o$440bo18bo3b
o$438bobo17bo5bo$439b2o18bo3bo58b2o$460b3o59bo$511b2o7bobo$437b2o72b3o
6b2o$437b2o58bo15b2obo$427b3o65bobo4b3o8bo2bo$429bo31bobo24b2o4bobo16b
2obo$428bo31bo2bo24b2o3bo2bo7bo2b2o2b3o8b2o12b2o$458bob2o32bobo7bo3bo
2b2o9bo13b2o$495bobo6bo2bo12bobo$461bo35bo8b2o12b2o$458b2obo$420b2o31b
o6bo74b3o$419bobo32bo59bo20b3o$421bo27bo3bo56bo4bo18bo3bo$448bo11b2o3b
2o43b2o3bo17bo5bo$448b2o11b5o44b5o19bo3bo58b2o$452bobo6b2ob2o46b3o20b
3o59bo$453b2o6b2ob2o46b2o72b2o7bobo$453bo8b3o47b2o72b3o6b2o$412b3o97b
2o58bo15b2obo$414bo87b3o65bobo4b3o8bo2bo$413bo90bo31bobo24b2o4bobo16b
2obo$458b2o5b2o36bo31bo2bo24b2o3bo2bo7bo2b2o2b3o8b2o12b2o$445bo12bo6bo
67bob2o32bobo7bo3bo2b2o9bo13b2o$444bo14b3o4b3o101bobo6bo2bo12bobo$444b
3o14bo6bo67bo35bo8b2o12b2o$405b2o126b2obo$404bobo128bo74b3o$406bo203b
3o$590bo18bo3bo$523b2o10b2o3b2o46bobo17bo5bo$437bo85b2o11b5o48b2o18bo
3bo58b2o$437bobo87bo8b2ob2o69b3o59bo$437b2o88bobo6b2ob2o120b2o7bobo$
397b3o127b2o8b3o47b2o72b3o6b2o$399bo87b3o97b2o58bo15b2obo$398bo90bo
155bobo4b3o8bo2bo$488bo122bobo24b2o4bobo16b2obo$430bo102b2o5b2o68bo2bo
24b2o3bo2bo7bo2b2o2b3o8b2o12b2o$429bo90bo12bo6bo67bob2o32bobo7bo3bo2b
2o9bo13b2o$429b3o87bo14b3o4b3o101bobo6bo2bo12bobo$390b2o127b3o14bo6bo
67bo35bo8b2o12b2o$389bobo88b2o126b2obo$391bo87bobo88b2o38bo74b3o$481bo
87bobo92bo20b3o$571bo88bo4bo18bo3bo$422bo175b2o10b2o3b2o43b2o3bo17bo5b
o$422bobo87bo85b2o11b5o44b5o19bo3bo58b2o$422b2o88bobo87bo8b2ob2o46b3o
20b3o59bo$512b2o88bobo6b2ob2o46b2o72b2o7bobo$472b3o127b2o8b3o47b2o72b
3o6b2o$474bo87b3o97b2o58bo15b2obo$473bo90bo87b3o17bo47bobo4b3o8bo2bo$
415bo147bo90bo18bo12bobo24b2o4bobo16b2obo$414bo193b2o5b2o36bo17b3o11bo
2bo24b2o3bo2bo7bo2b2o2b3o8b2o12b2o$414b3o191bo6bo67bob2o32bobo7bo3bo2b
2o9bo13b2o$375b2o232b3o4b3o101bobo6bo2bo12bobo$374bobo88b2o144bo6bo67b
o35bo8b2o12b2o$376bo87bobo216b2obo$466bo178b2o38bo74b3o$644bobo92bo20b
3o$407bo238bo88bo4bo18bo3bo$407bobo87bo175b2o10b2o3b2o43b2o3bo17bo5bo$
407b2o88bobo87bo85b2o11b5o44b5o19bo3bo$367b3o127b2o88bobo87bo8b2ob2o
46b3o20b3o$369bo87b3o127b2o88bobo6b2ob2o46b2o$368bo90bo217b2o8b3o47b2o
$458bo178b3o97b2o$400bo238bo$399bo238bo122bobo$399b3o281b2o5b2o68bo2bo
$360b2o321bo6bo67bob2o$359bobo88b2o232b3o4b3o$361bo87bobo88b2o144bo6bo
67bo$451bo87bobo88b2o126b2obo$541bo87bobo88b2o38bo$631bo87bobo$482bo
238bo$482bobo87bo175b2o10b2o3b2o$352b3o127b2o88bobo87bo85b2o11b5o$354b
o87b3o127b2o88bobo87bo8b2ob2o$353bo90bo87b3o127b2o88bobo6b2ob2o$443bo
90bo87b3o127b2o8b3o$533bo90bo87b3o$475bo147bo90bo$474bo90bo147bo$345b
2o127b3o87bo90bo102b2o5b2o$344bobo88b2o127b3o87bo90bo12bo6bo$346bo87bo
bo88b2o127b3o87bo14b3o4b3o$436bo87bobo217b3o14bo6bo$526bo178b2o$704bob
o$467bo238bo$467bobo$337b3o127b2o178bo$339bo87b3o217bobo87bo$338bo90bo
87b3o127b2o88bobo$428bo90bo87b3o127b2o$518bo90bo$460bo147bo$459bo90bo$
330b2o127b3o87bo90bo$329bobo88b2o127b3o87bo90bo$331bo87bobo217b3o87bo$
421bo178b2o127b3o$599bobo$362bo238bo$362bobo87bo$362b2o88bobo$322b3o
127b2o$324bo87b3o$323bo90bo87b3o$413bo90bo87b3o$355bo147bo90bo$354bo
90bo147bo$354b3o87bo90bo$315b2o127b3o87bo90bo$314bobo217b3o87bo90bo$
316bo307b3o87bo$714b3o2$347bo$347bobo$347b2o$307b3o$309bo87b3o$308bo
90bo87b3o$398bo90bo87b3o$340bo147bo90bo87b3o$339bo90bo147bo90bo$339b3o
87bo90bo147bo$300b2o127b3o87bo90bo$299bobo88b2o127b3o87bo$301bo87bobo
88b2o127b3o$391bo87bobo88b2o$481bo87bobo88b2o$332bo238bo87bobo$332bobo
87bo238bo$332b2o88bobo87bo$422b2o88bobo87bo$382b3o127b2o88bobo$384bo
87b3o127b2o$383bo90bo$325bo147bo$324bo90bo$324b3o87bo$285b2o127b3o$
284bobo398bo$286bo397bo$555b2o127b3o$554bobo$317bo238bo$317bobo87bo$
317b2o88bobo$277b3o127b2o178bo$279bo87b3o217bobo87bo$278bo90bo217b2o
88bobo$368bo178b3o127b2o$310bo238bo$309bo238bo$309b3o178bo$270b2o217bo
$269bobo88b2o127b3o$271bo87bobo88b2o$361bo87bobo88b2o$451bo87bobo88b2o
$302bo238bo87bobo$302bobo87bo238bo$302b2o88bobo87bo$392b2o88bobo87bo$
352b3o127b2o88bobo87bo$354bo87b3o127b2o88bobo$353bo90bo87b3o127b2o$
295bo147bo90bo$294bo90bo147bo$294b3o87bo90bo$255b2o127b3o87bo$254bobo
88b2o127b3o$256bo87bobo88b2o$346bo87bobo$436bo178b2o$287bo326bobo$287b
obo87bo238bo$287b2o88bobo87bo$247b3o127b2o88bobo87bo$249bo87b3o127b2o
88bobo87bo$248bo90bo217b2o88bobo$338bo178b3o127b2o$280bo238bo87b3o$
279bo90bo147bo90bo$279b3o87bo90bo147bo$240b2o127b3o87bo$239bobo88b2o
127b3o178bo$241bo87bobo307bo$331bo307b3o2$272bo$272bobo87bo$272b2o88bo
bo87bo$232b3o127b2o88bobo87bo$234bo87b3o127b2o88bobo$233bo90bo87b3o
127b2o$323bo90bo87b3o$265bo147bo90bo87b3o$264bo90bo147bo90bo$264b3o87b
o90bo147bo$225b2o127b3o87bo90bo$224bobo88b2o127b3o87bo90bo$226bo87bobo
88b2o127b3o87bo$316bo87bobo88b2o127b3o$406bo87bobo$257bo238bo$257bobo
87bo$257b2o88bobo$217b3o127b2o$219bo87b3o$218bo90bo$308bo$577b3o$340bo
238bo$339bo90bo147bo$210b2o127b3o87bo90bo$209bobo88b2o127b3o87bo90bo$
211bo87bobo217b3o87bo$301bo178b2o127b3o$479bobo$242bo238bo$242bobo87bo
$242b2o88bobo87bo$202b3o127b2o88bobo87bo$204bo87b3o127b2o88bobo$203bo
90bo87b3o127b2o$293bo90bo$235bo147bo178b3o$234bo90bo238bo$234b3o87bo
90bo147bo$195b2o127b3o87bo90bo$194bobo88b2o127b3o87bo90bo$196bo87bobo
217b3o87bo$286bo178b2o127b3o$464bobo88b2o$227bo238bo87bobo$227bobo87bo
238bo$227b2o88bobo$187b3o127b2o178bo$189bo87b3o217bobo$188bo90bo87b3o
127b2o$278bo90bo$368bo178b3o$310bo238bo$309bo90bo147bo$180b2o127b3o87b
o90bo$179bobo88b2o127b3o87bo$181bo87bobo217b3o$271bo178b2o$449bobo88b
2o$451bo87bobo$302bo238bo$302bobo87bo$172b3o127b2o88bobo87bo$174bo217b
2o88bobo$173bo178b3o127b2o$354bo87b3o$205bo147bo90bo87b3o$204bo90bo
147bo90bo$204b3o87bo90bo147bo$165b2o127b3o87bo$164bobo88b2o127b3o$166b
o87bobo$256bo178b2o$434bobo88b2o$197bo238bo87bobo$197bobo326bo$197b2o$
157b3o307bo$159bo307bobo87bo$158bo178b3o127b2o88bobo$339bo87b3o127b2o$
190bo147bo90bo87b3o$189bo90bo147bo90bo$189b3o87bo90bo147bo$279b3o87bo
90bo$240b2o127b3o87bo90bo$239bobo88b2o127b3o87bo$241bo87bobo88b2o127b
3o$331bo87bobo88b2o$182bo238bo87bobo$182bobo87bo238bo$182b2o88bobo87bo
$142b3o127b2o88bobo87bo$144bo217b2o88bobo87bo$143bo178b3o127b2o88bobo$
324bo87b3o127b2o$175bo147bo90bo87b3o$174bo90bo147bo90bo$174b3o87bo238b
o$264b3o$225b2o308bo$224bobo88b2o217bo$226bo87bobo88b2o127b3o$316bo87b
obo88b2o$167bo238bo87bobo$167bobo326bo$167b2o$127b3o307bo$129bo87b3o
217bobo87bo$128bo90bo87b3o127b2o88bobo$218bo90bo87b3o127b2o$160bo147bo
90bo87b3o$159bo238bo90bo$159b3o178bo147bo$339bo$210b2o127b3o178bo$209b
obo88b2o217bo$211bo87bobo88b2o127b3o$301bo87bobo$152bo238bo$152bobo87b
o$152b2o88bobo87bo$112b3o127b2o88bobo87bo$114bo87b3o127b2o88bobo$113bo
90bo87b3o127b2o$203bo90bo87b3o$145bo147bo90bo87b3o$144bo90bo147bo90bo$
144b3o87bo238bo$105b2o127b3o$104bobo88b2o308bo$106bo87bobo88b2o217bo$
196bo87bobo88b2o127b3o$286bo87bobo88b2o$137bo238bo87bobo$137bobo87bo
238bo$137b2o88bobo87bo$97b3o127b2o88bobo87bo$99bo87b3o127b2o88bobo87bo
$98bo90bo87b3o127b2o88bobo$188bo90bo217b2o$130bo147bo178b3o$129bo90bo
238bo$129b3o87bo90bo147bo$90b2o127b3o87bo$89bobo88b2o127b3o178bo$91bo
87bobo88b2o217bo$181bo87bobo217b3o$271bo178b2o$122bo326bobo$122bobo87b
o238bo$122b2o88bobo$82b3o127b2o178bo$84bo87b3o217bobo$83bo90bo87b3o
127b2o$173bo90bo$115bo147bo$114bo90bo$114b3o87bo90bo$75b2o127b3o87bo
90bo$74bobo88b2o127b3o87bo90bo$76bo87bobo217b3o87bo$166bo307b3o$435b2o
$107bo326bobo$107bobo87bo238bo$107b2o88bobo$67b3o127b2o$69bo87b3o$68bo
90bo87b3o$158bo90bo$100bo147bo178b3o$99bo90bo238bo$99b3o87bo90bo147bo$
60b2o127b3o87bo90bo$59bobo88b2o127b3o87bo90bo$61bo87bobo88b2o127b3o87b
o$151bo87bobo217b3o$241bo$92bo$92bobo87bo$92b2o88bobo87bo$52b3o127b2o
88bobo$54bo217b2o$53bo178b3o$234bo87b3o$85bo147bo90bo$84bo90bo147bo$
84b3o87bo90bo$45b2o127b3o87bo90bo$44bobo88b2o127b3o87bo90bo$46bo87bobo
88b2o127b3o87bo$136bo87bobo88b2o127b3o$226bo87bobo$77bo238bo$77bobo87b
o$77b2o88bobo$37b3o127b2o178bo$39bo87b3o217bobo$38bo90bo217b2o$128bo
178b3o$70bo238bo87b3o$69bo90bo147bo90bo$69b3o87bo90bo147bo$159b3o87bo$
120b2o127b3o$119bobo88b2o$121bo87bobo88b2o$211bo87bobo$62bo238bo$62bob
o87bo$62b2o88bobo$o6bo14b3o127b2o178bo$3o4b3o14bo87b3o217bobo$3bo6bo
12bo90bo87b3o127b2o$2b2o5b2o102bo90bo$55bo147bo178b3o$54bo90bo238bo$
54b3o87bo90bo147bo$4b3o8b2o127b3o87bo$3b2ob2o6bobo217b3o$3b2ob2o8bo$3b
5o11b2o264b2o$2b2o3b2o10b2o263bobo88b2o$47bo238bo87bobo$47bobo87bo238b
o$8bo38b2o88bobo87bo$7bob2o126b2o88bobo87bo$7bo67bo6bo14b3o127b2o88bob
o87bo$75b3o4b3o14bo217b2o88bobo$7b2obo67bo6bo12bo308b2o$5bo2bo68b2o5b
2o$5bobo122bo$129bo$30b2o97b3o178bo$30b2o47b3o8b2o217bo$30b2o46b2ob2o
6bobo88b2o127b3o$6b3o20b3o46b2ob2o8bo87bobo88b2o$5bo3bo19b5o44b5o11b2o
85bo87bobo88b2o$4bo5bo17bo3b2o43b2o3b2o10b2o175bo87bobo$5bo3bo18bo4bo
88bo238bo$6b3o20bo92bobo$6b3o74bo38b2o178bo$82bob2o216bobo87bo$36b2o8b
o35bo67bo6bo14b3o127b2o88bobo$22bo13bo2bo6bobo101b3o4b3o14bo87b3o127b
2o$6b2o12b2o9b2o2bo3bo7bobo32b2obo67bo6bo12bo90bo$6b2o13b2o7b3o2b2o2bo
7bo2bo3b2o24bo2bo31bo36b2o5b2o102bo$27bob2o16bobo4b2o24bobo31bo$27bo2b
o8b3o4bobo65b3o$27bob2o15bo58b2o$22b2o6b3o72b2o47b3o8bo$21bobo7b2o72b
2o46b2ob2o6b2o$13bobo5bo59b3o20b3o46b2ob2o6bobo178b2o$13b2o5b2o58bo3bo
19b5o44b5o11b2o173bobo$14bo24b2o38bo5bo17bo3b2o43b2o3b2o11bo175bo$38bo
bo39bo3bo18bo4bo56bo3bo27bo$23bobo11bo43b3o20bo59bo32bobo87bo$18bo4bo
2bo10bo2bo10b2o28b3o74bo6bo31b2o88bobo87bo$19b2o5b2o9bo13b3o103bob2o
126b2o88bobo$7bo6b2o8bo3b2o8bobo12b2obo8bo45b2o8bo35bo67bo6bo14b3o127b
2o$5b2o7b2o10b2o11b2o6bo5bo2bo6bobo31bo13bo2bo6bobo101b3o4b3o14bo87b3o
$6b2o15bo2bo8bo11bo5b2obo5bobo16b2o12b2o9b2o2bo3bo7bobo32b2obo67bo6bo
12bo90bo$23bobo10b2o13b3o7bo2bo11b2o3b2o13b2o7b3o2b2o2bo7bo2bo3b2o24bo
2bo11b3o17bo36b2o5b2o102bo$35b2o14b2o9bobo11b2o24bob2o16bobo4b2o24bobo
12bo18bo$63bobo36bo2bo8b3o4bobo47bo17b3o178bo$55bo9bo36bob2o15bo58b2o
187bo$53b2o42b2o6b3o72b2o47b3o8bo128b3o$54b2o40bobo7b2o120b2ob2o6b2o$
88bobo5bo59b3o69b2ob2o6bobo$42bobo43b2o5b2o58bo3bo18b2o48b5o11b2o$43b
2o44bo24b2o38bo5bo17bobo46b2o3b2o11bo$43bo69bobo39bo3bo18bo61bo3bo27bo
$98bobo11bo43b3o80bo32bobo$16bo2bo26bobo44bo4bo2bo10bo2bo10b2o28b3o74b
o6bo31b2o$4o11bo14b4o12b2o46b2o5b2o9bo13b3o103bob2o$o3bo10bo3bo10bo3bo
12bo34bo6b2o8bo3b2o8bobo12b2obo8bo45b2o8bo35bo67bo6bo14b3o$o14b4o11bo
11b2o36b2o7b2o10b2o11b2o6bo5bo2bo6bobo45bo2bo6bobo101b3o4b3o14bo$bo2bo
26bo2bo7bobo36b2o15bo2bo8bo11bo5b2obo5bobo16b2o23b2o2bo3bo7bobo32b2obo
67bo6bo12bo$42bo11bo43bobo10b2o13b3o7bo2bo11b2o3b2o22b3o2b2o2bo7bo2bo
3b2o24bo2bo68b2o5b2o$52bobo55b2o14b2o9bobo11b2o24bob2o16bobo4b2o24bobo
122bo$39b2o9b2o12b2o72bobo36bo2bo8b3o4bobo155bo$39b2o9b2o12b2o64bo9bo
36bob2o15bo58b2o97b3o$30b2o3bo6b2o6b2o76b2o42b2o6b3o72b2o47b3o8bo$30bo
bo3bo5b3o7bobo74b2o40bobo7b2o72b2o46b2ob2o6b2o$31b5o6b2o10bo116bo59b3o
20b3o46b2ob2o6bobo$32b3o4b2o76bobo50b2o58bo3bo19b5o44b5o11b2o$39b2o77b
2o69b2o38bo5bo17bo3b2o43b2o3b2o11bo$118bo69bobo39bo3bo18bo4bo56bo3bo
27bo$173bobo11bo43b3o20bo59bo32bobo$bo2bo86bo2bo26bobo44bo4bo2bo10bo2b
o10b2o28b3o74bo6bo31b2o$o74b4o11bo14b4o12b2o46b2o5b2o9bo13b3o103bob2o$
o3bo70bo3bo10bo3bo10bo3bo12bo34bo6b2o8bo3b2o8bobo12b2obo8bo45b2o8bo35b
o$4o71bo14b4o11bo11b2o36b2o7b2o10b2o11b2o6bo5bo2bo6bobo31bo13bo2bo6bob
o$76bo2bo26bo2bo7bobo36b2o15bo2bo8bo11bo5b2obo5bobo16b2o12b2o9b2o2bo3b
o7bobo32b2obo$117bo11bo43bobo10b2o13b3o7bo2bo11b2o3b2o13b2o7b3o2b2o2bo
7bo2bo3b2o24bo2bo31bo$127bobo55b2o14b2o9bobo11b2o24bob2o16bobo4b2o24bo
bo31bo$114b2o9b2o12b2o72bobo36bo2bo8b3o4bobo65b3o$114b2o9b2o12b2o64bo
9bo36bob2o15bo58b2o$105b2o3bo6b2o6b2o76b2o42b2o6b3o72b2o$105bobo3bo5b
3o7bobo18bobo53b2o40bobo7b2o$106b5o6b2o10bo18b2o96bo59b3o$107b3o4b2o
33bo42bobo50b2o58bo3bo18b2o$114b2o77b2o69b2o38bo5bo17bobo$193bo69bobo
39bo3bo18bo$248bobo11bo43b3o$76bo2bo56bo2bo26bo2bo26bobo44bo4bo2bo10bo
2bo10b2o28b3o$4o71bo44b4o11bo14b4o11bo14b4o12b2o46b2o5b2o9bo13b3o$o3bo
70bo3bo40bo3bo10bo3bo10bo3bo10bo3bo10bo3bo12bo34bo6b2o8bo3b2o8bobo12b
2obo8bo45b2o8bo$o74b4o41bo14b4o11bo14b4o11bo11b2o36b2o7b2o10b2o11b2o6b
o5bo2bo6bobo31bo13bo2bo6bobo$bo2bo116bo2bo26bo2bo26bo2bo7bobo36b2o15bo
2bo8bo11bo5b2obo5bobo16b2o12b2o9b2o2bo3bo7bobo$192bo11bo43bobo10b2o13b
3o7bo2bo11b2o3b2o13b2o7b3o2b2o2bo7bo2bo3b2o$202bobo55b2o14b2o9bobo11b
2o24bob2o16bobo4b2o$189b2o9b2o12b2o72bobo36bo2bo8b3o4bobo$189b2o9b2o
12b2o64bo9bo36bob2o15bo$180b2o3bo6b2o6b2o76b2o42b2o6b3o$180bobo3bo5b3o
7bobo74b2o40bobo7b2o$181b5o6b2o10bo116bo$182b3o4b2o76bobo50b2o$189b2o
77b2o69b2o$268bo69bobo$323bobo11bo$bo2bo26bo2bo26bo2bo86bo2bo26bo2bo
56bo2bo26bobo44bo4bo2bo10bo2bo10b2o$o14b4o11bo14b4o11bo14b4o71bo29bo
44b4o11bo14b4o12b2o46b2o5b2o9bo13b3o$o3bo10bo3bo10bo3bo10bo3bo10bo3bo
10bo3bo70bo3bo25bo3bo40bo3bo10bo3bo10bo3bo12bo34bo6b2o8bo3b2o8bobo12b
2obo8bo$4o11bo14b4o11bo14b4o11bo74b4o26b4o41bo14b4o11bo11b2o36b2o7b2o
10b2o11b2o6bo5bo2bo6bobo$16bo2bo26bo2bo26bo2bo146bo2bo26bo2bo7bobo36b
2o15bo2bo8bo11bo5b2obo5bobo$267bo11bo43bobo10b2o13b3o7bo2bo11b2o$277bo
bo55b2o14b2o9bobo11b2o$264b2o9b2o12b2o72bobo$264b2o9b2o12b2o64bo9bo$
255b2o3bo6b2o6b2o76b2o$255bobo3bo5b3o7bobo74b2o$256b5o6b2o10bo$257b3o
4b2o76bobo$264b2o77b2o$343bo2$76bo2bo56bo2bo86bo2bo26bo2bo56bo2bo26bob
o$4o71bo44b4o11bo14b4o26b4o41bo29bo44b4o11bo14b4o12b2o$o3bo70bo3bo40bo
3bo10bo3bo10bo3bo25bo3bo40bo3bo25bo3bo40bo3bo10bo3bo10bo3bo12bo$o74b4o
41bo14b4o11bo29bo44b4o26b4o41bo14b4o11bo11b2o$bo2bo116bo2bo26bo2bo26bo
2bo116bo2bo26bo2bo7bobo$342bo11bo$352bobo$279b2o58b2o9b2o12b2o$272b3o
4b2o58b2o9b2o12b2o$271b5o6b2o10bo35b2o3bo6b2o6b2o$270bobo3bo5b3o7bobo
35bobo3bo5b3o7bobo$270b2o3bo6b2o6b2o39b5o6b2o10bo$279b2o9b2o12b2o26b3o
4b2o$279b2o9b2o12b2o33b2o$292bobo$282bo11bo$bo2bo146bo2bo26bo2bo56bo2b
o26bo2bo7bobo$o74b4o26b4o41bo29bo44b4o11bo14b4o11bo11b2o$o3bo70bo3bo
25bo3bo40bo3bo25bo3bo40bo3bo10bo3bo10bo3bo10bo3bo12bo$4o71bo29bo44b4o
26b4o41bo14b4o11bo14b4o12b2o$76bo2bo26bo2bo116bo2bo26bo2bo26bobo2$283b
o$204b2o77b2o$197b3o4b2o33bo42bobo$196b5o6b2o10bo18b2o$195bobo3bo5b3o
7bobo18bobo53b2o$195b2o3bo6b2o6b2o76b2o$204b2o9b2o12b2o64bo9bo$204b2o
9b2o12b2o72bobo$217bobo55b2o14b2o9bobo11b2o$207bo11bo43bobo10b2o13b3o
7bo2bo11b2o$76bo2bo56bo2bo26bo2bo26bo2bo7bobo53bo2bo8bo11bo5b2obo5bobo
$4o71bo44b4o11bo14b4o11bo14b4o11bo11b2o45b2o10b2o11b2o6bo5bo2bo6bobo$o
3bo70bo3bo40bo3bo10bo3bo10bo3bo10bo3bo10bo3bo10bo3bo12bo41b2o8bo3b2o8b
obo12b2obo8bo$o74b4o41bo14b4o11bo14b4o11bo14b4o12b2o46b2o5b2o9bo13b3o$
bo2bo116bo2bo26bo2bo26bo2bo26bobo44bo4bo2bo10bo2bo10b2o$263bobo11bo$
208bo69bobo$129b2o77b2o44bo24b2o$122b3o4b2o33bo42bobo43b2o5b2o$121b5o
6b2o10bo18b2o88bobo5bo$120bobo3bo5b3o7bobo18bobo53b2o40bobo7b2o$120b2o
3bo6b2o6b2o76b2o42b2o6b3o$129b2o9b2o12b2o64bo9bo36bob2o15bo$129b2o9b2o
12b2o72bobo36bo2bo8b3o4bobo$142bobo55b2o14b2o9bobo11b2o24bob2o16bobo4b
2o$132bo11bo43bobo10b2o13b3o7bo2bo11b2o3b2o13b2o7b3o2b2o2bo7bo2bo3b2o$
91bo2bo26bo2bo7bobo53bo2bo8bo11bo5b2obo5bobo16b2o12b2o9b2o2bo3bo7bobo$
90bo14b4o11bo11b2o45b2o10b2o11b2o6bo5bo2bo6bobo31bo13bo2bo6bobo$90bo3b
o10bo3bo10bo3bo12bo41b2o8bo3b2o8bobo12b2obo8bo45b2o8bo$90b4o11bo14b4o
12b2o46b2o5b2o9bo13b3o$106bo2bo26bobo44bo4bo2bo10bo2bo10b2o28b3o$188bo
bo11bo43b3o$133bo69bobo39bo3bo18bo$54b2o77b2o69b2o38bo5bo17bobo$47b3o
4b2o33bo42bobo50b2o58bo3bo18b2o$46b5o6b2o10bo18b2o96bo59b3o$45bobo3bo
5b3o7bobo18bobo53b2o40bobo7b2o$45b2o3bo6b2o6b2o76b2o42b2o6b3o72b2o$54b
2o9b2o12b2o64bo9bo36bob2o15bo58b2o$54b2o9b2o12b2o72bobo36bo2bo8b3o4bob
o65b3o$67bobo55b2o14b2o9bobo11b2o24bob2o16bobo4b2o24bobo31bo$57bo11bo
43bobo10b2o13b3o7bo2bo11b2o3b2o22b3o2b2o2bo7bo2bo3b2o24bo2bo31bo$16bo
2bo26bo2bo7bobo36b2o15bo2bo8bo11bo5b2obo5bobo16b2o23b2o2bo3bo7bobo32b
2obo$15bo14b4o11bo11b2o36b2o7b2o10b2o11b2o6bo5bo2bo6bobo45bo2bo6bobo$
15bo3bo10bo3bo10bo3bo12bo34bo6b2o8bo3b2o8bobo12b2obo8bo45b2o8bo35bo$
15b4o11bo14b4o12b2o46b2o5b2o9bo13b3o103bob2o$31bo2bo26bobo44bo4bo2bo
10bo2bo10b2o28b3o74bo$113bobo11bo43b3o20bo$58bo69bobo39bo3bo18bo4bo$
58b2o44bo24b2o38bo5bo17bo3b2o43b2o3b2o10b2o$14bo42bobo43b2o5b2o58bo3bo
19b5o44b5o11b2o$13b2o88bobo5bo59b3o20b3o46b2ob2o8bo$13bobo53b2o40bobo
7b2o72b2o46b2ob2o6bobo$68b2o42b2o6b3o72b2o47b3o8b2o$70bo9bo36bob2o15bo
58b2o97b3o$78bobo36bo2bo8b3o4bobo47bo17b3o87bo$50b2o14b2o9bobo11b2o24b
ob2o16bobo4b2o24bobo12bo18bo90bo$38bobo10b2o13b3o7bo2bo11b2o3b2o13b2o
7b3o2b2o2bo7bo2bo3b2o24bo2bo11b3o17bo36b2o5b2o$21b2o15bo2bo8bo11bo5b2o
bo5bobo16b2o12b2o9b2o2bo3bo7bobo32b2obo67bo6bo$20b2o7b2o10b2o11b2o6bo
5bo2bo6bobo31bo13bo2bo6bobo101b3o4b3o$22bo6b2o8bo3b2o8bobo12b2obo8bo
45b2o8bo35bo67bo6bo$34b2o5b2o9bo13b3o103bob2o$33bo4bo2bo10bo2bo10b2o
28b3o74bo6bo$38bobo11bo43b3o20bo59bo$53bobo39bo3bo18bo4bo56bo3bo$29bo
24b2o38bo5bo17bo3b2o43b2o3b2o11bo$28b2o5b2o58bo3bo19b5o44b5o11b2o85bo$
28bobo5bo59b3o20b3o46b2ob2o6bobo87bobo$36bobo7b2o72b2o46b2ob2o6b2o89b
2o$37b2o6b3o72b2o47b3o8bo128b3o$42bob2o15bo58b2o187bo$42bo2bo8b3o4bobo
65b3o178bo$42bob2o16bobo4b2o24bobo31bo$21b2o13b2o7b3o2b2o2bo7bo2bo3b2o
24bo2bo31bo36b2o5b2o$21b2o12b2o9b2o2bo3bo7bobo32b2obo67bo6bo$37bo13bo
2bo6bobo101b3o4b3o$51b2o8bo35bo67bo6bo144b2o$97bob2o216bobo$21b3o74bo
218bo$21b3o20bo$20bo3bo18bo4bo$19bo5bo17bo3b2o43b2o3b2o10b2o175bo$20bo
3bo19b5o44b5o11b2o85bo87bobo$21b3o20b3o46b2ob2o8bo87bobo88b2o$45b2o46b
2ob2o6bobo88b2o127b3o$45b2o47b3o8b2o127b3o87bo$45b2o97b3o87bo90bo$54b
3o87bo90bo$20bobo31bo90bo147bo$20bo2bo31bo36b2o5b2o193bo$22b2obo67bo6b
o12bo178b3o$90b3o4b3o14bo$22bo67bo6bo14b3o127b2o$22bob2o126b2o88bobo$
23bo38b2o88bobo87bo$62bobo87bo$62bo$17b2o3b2o10b2o$18b5o11b2o85bo$18b
2ob2o8bo87bobo217b3o$18b2ob2o6bobo88b2o127b3o87bo$19b3o8b2o127b3o87bo
90bo$69b3o87bo90bo$69bo90bo147bo$70bo238bo$17b2o5b2o102bo178b3o$18bo6b
o12bo90bo217b2o$15b3o4b3o14bo87b3o217bobo$15bo6bo14b3o127b2o178bo$77b
2o88bobo$77bobo87bo$77bo$226bo$136bo87bobo$46bo87bobo88b2o$44bobo88b2o
$45b2o$84b3o$84bo238bo$85bo147bo90bo$143bo90bo87b3o$53bo90bo87b3o127b
2o$54bo87b3o127b2o88bobo$52b3o127b2o88bobo87bo$92b2o88bobo87bo$92bobo
87bo$92bo238bo$329bobo$151bo178b2o$61bo87bobo$59bobo88b2o127b3o$60b2o
127b3o87bo$189bo90bo$190bo$248bo$158bo90bo$68bo90bo87b3o127b2o$69bo87b
3o127b2o88bobo$67b3o127b2o88bobo87bo$107b2o88bobo87bo$107bobo87bo$107b
o238bo$256bo87bobo$166bo87bobo88b2o$76bo87bobo88b2o$74bobo88b2o$75b2o
127b3o$114b3o87bo$114bo90bo$115bo147bo$173bo90bo$83bo90bo87b3o127b2o$
84bo87b3o127b2o88bobo$82b3o127b2o88bobo87bo$122b2o88bobo87bo$122bobo
87bo$122bo238bo$271bo87bobo$181bo87bobo88b2o$91bo87bobo88b2o127b3o$89b
obo88b2o127b3o87bo$90b2o127b3o87bo90bo$129b3o87bo90bo$129bo90bo147bo$
130bo238bo$188bo178b3o$98bo90bo217b2o$99bo87b3o127b2o88bobo$97b3o217bo
bo87bo$317bo2$376bo$286bo87bobo$196bo87bobo88b2o$106bo87bobo88b2o127b
3o$104bobo88b2o217bo$105b2o127b3o178bo$144b3o87bo$144bo90bo147bo$145bo
147bo90bo$203bo90bo87b3o$113bo90bo87b3o127b2o$114bo87b3o217bobo$112b3o
127b2o178bo$152b2o88bobo$152bobo87bo$152bo$301bo$211bo87bobo$121bo87bo
bo88b2o$119bobo88b2o127b3o$120b2o127b3o87bo$159b3o87bo90bo$159bo90bo
147bo$160bo147bo90bo$218bo90bo87b3o$128bo90bo87b3o127b2o$129bo87b3o
127b2o88bobo$127b3o127b2o88bobo87bo$167b2o88bobo87bo$167bobo87bo$167bo
238bo$316bo87bobo$226bo87bobo88b2o$136bo87bobo88b2o$134bobo88b2o$135b
2o127b3o$264bo$265bo147bo$323bo90bo$233bo90bo87b3o$143bo90bo87b3o127b
2o$144bo87b3o217bobo$142b3o127b2o178bo$272bobo$272bo$421bo$331bo87bobo
$241bo87bobo88b2o$151bo87bobo88b2o127b3o$149bobo88b2o127b3o87bo$150b2o
127b3o87bo90bo$189b3o87bo90bo$189bo90bo147bo$190bo147bo90bo$248bo90bo
87b3o$158bo90bo87b3o127b2o$159bo87b3o127b2o88bobo$157b3o127b2o88bobo
87bo$197b2o88bobo87bo$197bobo87bo$197bo238bo$346bo87bobo$256bo87bobo
88b2o$166bo87bobo88b2o127b3o$164bobo88b2o127b3o87bo$165b2o127b3o87bo
90bo$204b3o87bo90bo$204bo90bo147bo$205bo147bo90bo$263bo90bo87b3o$173bo
90bo87b3o$174bo87b3o$172b3o127b2o$212b2o88bobo$212bobo87bo$212bo238bo$
361bo87bobo$271bo87bobo88b2o$181bo87bobo88b2o127b3o$179bobo88b2o127b3o
87bo$180b2o127b3o87bo90bo$219b3o87bo90bo$219bo90bo147bo$220bo238bo$
278bo178b3o$188bo90bo217b2o$189bo87b3o217bobo$187b3o127b2o178bo$227b2o
88bobo$227bobo87bo$227bo238bo$376bo87bobo$286bo87bobo88b2o$196bo87bobo
88b2o127b3o$194bobo88b2o127b3o87bo$195b2o127b3o87bo90bo$234b3o87bo90bo
$234bo90bo147bo$235bo238bo$293bo178b3o$203bo90bo217b2o$204bo87b3o127b
2o88bobo$202b3o127b2o88bobo87bo$242b2o88bobo87bo$242bobo87bo$242bo238b
o$391bo87bobo$301bo87bobo88b2o$211bo87bobo88b2o$209bobo88b2o127b3o$
210b2o127b3o87bo$249b3o87bo90bo$249bo90bo147bo$250bo238bo$308bo178b3o$
218bo90bo217b2o$219bo87b3o127b2o88bobo$217b3o127b2o88bobo87bo$257b2o
88bobo87bo$257bobo87bo$257bo238bo$406bo87bobo$316bo87bobo88b2o$226bo
87bobo88b2o$224bobo88b2o127b3o$225b2o127b3o87bo$264b3o87bo90bo$264bo
90bo147bo$265bo147bo90bo$323bo90bo87b3o$233bo90bo87b3o127b2o$234bo87b
3o217bobo$232b3o127b2o178bo$272b2o88bobo$272bobo87bo$272bo238bo$509bob
o$331bo178b2o$241bo87bobo217b3o$239bobo88b2o217bo$240b2o127b3o178bo$
279b3o87bo$279bo90bo147bo$280bo147bo90bo$338bo90bo87b3o$248bo90bo87b3o
127b2o$249bo87b3o217bobo$247b3o127b2o178bo$287b2o88bobo$287bobo87bo$
287bo238bo$524bobo$346bo178b2o$256bo87bobo217b3o$254bobo88b2o217bo$
255b2o127b3o178bo$294b3o87bo$294bo90bo$295bo$353bo$263bo90bo$264bo87b
3o127b2o$262b3o127b2o88bobo$302b2o88bobo87bo$302bobo87bo$302bo238bo$
539bobo$361bo178b2o$271bo87bobo217b3o$269bobo88b2o127b3o87bo$270b2o
127b3o87bo90bo$309b3o87bo90bo$309bo90bo$310bo147bo$368bo90bo$278bo90bo
87b3o$279bo87b3o127b2o$277b3o127b2o88bobo$317b2o88bobo87bo$317bobo87bo
$317bo238bo$466bo87bobo$376bo87bobo88b2o$286bo87bobo88b2o127b3o$284bob
o88b2o217bo$285b2o127b3o178bo$324b3o87bo$324bo90bo147bo$325bo147bo90bo
$383bo90bo87b3o$293bo90bo87b3o$294bo87b3o$292b3o127b2o$332b2o88bobo$
332bobo87bo$332bo2$391bo$301bo87bobo217b3o$299bobo88b2o127b3o87bo$300b
2o127b3o87bo90bo$339b3o87bo90bo$339bo90bo147bo$340bo238bo$398bo178b3o$
308bo90bo217b2o$309bo87b3o127b2o88bobo$307b3o127b2o88bobo87bo$347b2o
88bobo87bo$347bobo87bo$347bo238bo$496bo87bobo$406bo87bobo88b2o$316bo
87bobo88b2o$314bobo88b2o$315b2o127b3o$354b3o87bo$354bo90bo147bo$355bo
147bo90bo$413bo90bo87b3o$323bo90bo87b3o127b2o$324bo87b3o127b2o88bobo$
322b3o127b2o88bobo87bo$362b2o88bobo87bo$362bobo87bo$362bo238bo$511bo
87bobo$421bo87bobo88b2o$331bo87bobo88b2o$329bobo88b2o$330b2o127b3o$
369b3o87bo$369bo90bo$370bo147bo$428bo90bo$338bo90bo87b3o127b2o$339bo
87b3o127b2o88bobo$337b3o127b2o88bobo87bo$377b2o88bobo87bo$377bobo87bo$
377bo238bo$614bobo$436bo178b2o$346bo87bobo$344bobo88b2o127b3o$345b2o
127b3o87bo$384b3o87bo90bo$384bo90bo147bo$385bo147bo90bo$443bo90bo87b3o
$353bo90bo87b3o127b2o$354bo87b3o217bobo$352b3o127b2o178bo$392b2o88bobo
$392bobo87bo$392bo238bo$541bo87bobo$451bo87bobo88b2o$361bo87bobo88b2o
127b3o$359bobo88b2o217bo$360b2o127b3o178bo$399b3o87bo$399bo90bo$400bo
147bo$458bo90bo$368bo90bo87b3o$369bo87b3o$367b3o127b2o$407b2o88bobo$
407bobo87bo$407bo238bo$556bo87bobo$466bo87bobo88b2o$376bo87bobo88b2o
127b3o14bo6bo$374bobo88b2o127b3o87bo14b3o4b3o$375b2o127b3o87bo90bo12bo
6bo$414b3o87bo90bo102b2o5b2o$414bo90bo147bo$415bo147bo90bo$473bo90bo
87b3o$383bo90bo87b3o128bo8b3o$384bo87b3o218b2o6b2ob2o$382b3o127b2o178b
obo6b2ob2o$422b2o88bobo173b2o11b5o$422bobo87bo175bo11b2o3b2o$422bo238b
o27bo3bo$571bo87bobo32bo$481bo87bobo88b2o31bo6bo$391bo87bobo88b2o126b
2obo$389bobo88b2o127b3o14bo6bo67bo$390b2o127b3o87bo14b3o4b3o$429b3o87b
o90bo12bo6bo67bob2o$429bo90bo102b2o5b2o36bo31bo2bo$430bo238bo31bobo$
488bo178b3o$398bo90bo187b2o$399bo87b3o127b2o8b3o47b2o$397b3o127b2o88bo
bo6b2ob2o46b2o$437b2o88bobo87bo8b2ob2o46b3o20b3o$437bobo87bo85b2o11b5o
44b5o19bo3bo$437bo175b2o10b2o3b2o43b2o3bo17bo5bo$586bo88bo4bo18bo3bo$
496bo87bobo92bo20b3o$406bo87bobo88b2o38bo74b3o$404bobo88b2o126b2obo$
405b2o127b3o14bo6bo67bo35bo8b2o12b2o$444b3o87bo14b3o4b3o101bobo6bo2bo
12bobo$444bo90bo12bo6bo67bob2o32bobo7bo3bo2b2o9bo13b2o$445bo102b2o5b2o
54b3o11bo2bo24b2o3bo2bo7bo2b2o2b3o8b2o12b2o$503bo109bo12bobo24b2o4bobo
16b2obo$413bo90bo107bo47bobo4b3o8bo2bo$414bo87b3o97b2o58bo15b2obo$412b
3o127b2o8b3o47b2o72b3o6b2o$452b2o88bobo6b2ob2o120b2o7bobo$452bobo87bo
8b2ob2o69b3o59bo$452bo85b2o11b5o48b2o18bo3bo58b2o$538b2o10b2o3b2o46bob
o17bo5bo$511bo93bo18bo3bo$421bo87bobo113b3o$419bobo88b2o38bo74b3o$420b
2o126b2obo$459b3o14bo6bo67bo35bo8b2o12b2o$459bo14b3o4b3o101bobo6bo2bo
12bobo$460bo12bo6bo67bob2o32bobo7bo3bo2b2o9bo13b2o$473b2o5b2o36bo31bo
2bo24b2o3bo2bo7bo2b2o2b3o8b2o12b2o$428bo90bo31bobo24b2o4bobo16b2obo$
429bo87b3o65bobo4b3o8bo2bo$427b3o97b2o58bo15b2obo$467b2o8b3o47b2o72b3o
6b2o$467bobo6b2ob2o46b2o72b2o7bobo$467bo8b2ob2o46b3o20b3o59bo$463b2o
11b5o44b5o19bo3bo58b2o$463b2o10b2o3b2o43b2o3bo17bo5bo$436bo88bo4bo18bo
3bo$434bobo92bo20b3o$435b2o38bo74b3o$473b2obo$476bo35bo8b2o12b2o$510bo
bo6bo2bo12bobo$473bob2o32bobo7bo3bo2b2o9bo13b2o$443bo31bo2bo24b2o3bo2b
o7bo2b2o2b3o8b2o12b2o$444bo31bobo24b2o4bobo16b2obo$442b3o65bobo4b3o8bo
2bo$452b2o58bo15b2obo$452b2o72b3o6b2o$452b2o72b2o7bobo$452b3o20b3o59bo
$450b5o19bo3bo58b2o$450b2o3bo17bo5bo$450bo4bo18bo3bo$454bo20b3o$475b3o
2$437bo8b2o12b2o$435bobo6bo2bo12bobo$434bobo7bo3bo2b2o9bo13b2o$428b2o
3bo2bo7bo2b2o2b3o8b2o12b2o$428b2o4bobo16b2obo$435bobo4b3o8bo2bo$437bo
15b2obo$451b3o6b2o$451b2o7bobo$462bo$462b2o!
Comments, feedback, suggestions and bug reports welcome!

Re: Pattern viewer for forum threads

Posted: January 28th, 2016, 1:56 pm
by rowett
Build 174 is now live on conwaylife.com

Please note: you will need to refresh your browser to use the new build

Enhancements since the last released build:
  • grid boundary
    • patterns that hit the large grid boundary (8192x8192 cells) are now instantly deleted in their entirety
    • new script command [[ DELETERANGE <1..16> ]] that defines how near live cells have to be to each other to be considered part of a single entity for deletion (default 3 cells)
  • performance improvements
    • drawing the starfield is now 25% faster in the general case and 4x faster at ANGLE=0
    • drawing the gridlines is now 3.5x faster
Fixes since the last released build:
  • RLE decoder was hanging on some invalid patterns
  • removed support for LV85 format patterns
Here is an example of a spaceship hitting the grid boundary and being cleared.

Code: Select all

#N 10-engine Cordership
#O Dean Hickerson
#C A c/12 period 96 diagonal Cordership that uses 10 switch engines, which was the fewest possible known at the time of its discovery.
#C http://www.conwaylife.com/wiki/index.php?title=10-engine_Cordership
x = 88, y = 88, rule = 23/3
42bo45b$42bo45b$44bo5bo37b$43bo6bobo35b$42bo3bo2bo38b$43bo2bobob2o36b$
48bob2o36b$62b2o24b$62b2o24b7$70b2o16b$26b2o2bo39b2o16b$29bobo56b$28bo
59b2$30b2o56b2$31b2o55b$30bo47b2o8b$28b2ob2o45b2o8b$31b2o55b$16bo12bo
58b$16bo22b3o46b$18bo5bo13bo49b$17bo6bobo10bo4b2o44b$16bo3bo2bo12bo3bo
47b$17bo2bobob2o10bo2bo4bo41b2o$22bob2o10bo3bo3bo32bo8b2o$37b2obob3o
31bobo9b$40bo47b$41b4o31bo2bo8b$30b3o10b2o33b2o8b$29bo3bo45bo8b$28bo4b
o54b$27bo3bo56b$27bo2bob3o53b$27bo7bo52b$2o2bo24bo3bobo40b2o10b$3bobo
23bo3bob2o41bo9b$2bo28b3ob2o39b2o10b2$4b2o82b2$5b2o81b$4bo83b$2b2ob2o
52bobo6bobo17b$5b2o51bo9bobo17b$3bo55bo2bo6bo18b$61b3o24b5$51bo36b$50b
obo35b2$50bo2bo34b$7b2o43b2o34b$7b2o44bo34b5$50b2o36b$52bo35b$15b2o33b
2o36b$15b2o71b5$33bobo6bobo43b$32bo9bobo43b$23b2o8bo2bo6bo44b$23b2o10b
3o50b7$31b2o55b$31b2o!
#C [[ DELETERANGE 13 THEME 0 ZOOM 2 YOFFSET -4019 XOFFSET -4019 STOP 485 NOSTEPBACK ]]

Re: Pattern viewer for forum threads

Posted: March 3rd, 2016, 10:53 am
by Kiran
How does it decide which cells are in the "same pattern" as those that hit the edge?

Re: Pattern viewer for forum threads

Posted: March 3rd, 2016, 11:00 am
by muzik
Kiran wrote:How does it decide which cells are in the "same pattern" as those that hit the edge?
Taking a guess here: it searches for matching known patterns in a database or something

Re: Pattern viewer for forum threads

Posted: March 3rd, 2016, 11:04 am
by dvgrn
muzik wrote:
Kiran wrote:How does it decide which cells are in the "same pattern" as those that hit the edge?
Taking a guess here: it searches for matching known patterns in a database or something
No, it's much simpler than that. The description of the new DELETERANGE script command explains it reasonably well. I guess wickstretchers and spacefillers and such are going to be in big trouble...! But then, they always are when the Life grid is bounded, anyway.

Re: Pattern viewer for forum threads

Posted: March 3rd, 2016, 2:08 pm
by Kiran
But then, they always are when the Life grid is bounded, anyway.
But it is fun to watch them explode!

Re: Pattern viewer for forum threads

Posted: March 3rd, 2016, 8:11 pm
by Kiran
I found a bug in the edge detection script.

Re: Pattern viewer for forum threads

Posted: March 4th, 2016, 10:34 am
by rowett
Kiran wrote:I found a bug in the edge detection script.
Thanks for the bug report.

The current implementation is limited to deleting the first 8000 or so cells of a pattern that hits the edge. I'll raise this limit (or make it dynamic) in a future build.

Re: Pattern viewer for forum threads

Posted: March 25th, 2016, 10:16 am
by rowett
I'm in the final phases of testing the next LifeViewer public release. I'm looking for some RLE format patterns to test the new functionality. Specifically anything using:
  • Alan Hensel's isotropic non-totalistic rules (e.g. B2ce3ai_S23) - see here
  • 2-state totalistc Hex neighbourhood rules (e.g. B2/S34H)
  • Any 2-state totalistic rule with a bounded grid definition (e.g. LifeHistory:K40*,20) - see here
Please PM me with any patterns so as to avoid cluttering up this thread.

Many thanks!

Re: Pattern viewer for forum threads

Posted: March 26th, 2016, 3:39 pm
by Alexey_Nigin
I guess the viewer should not try to open this.

Re: Pattern viewer for forum threads

Posted: March 26th, 2016, 5:31 pm
by rowett
Indeed. The new build determines the pattern is too large instantly. Test case is here.

Thanks for reporting.

Re: Pattern viewer for forum threads

Posted: March 27th, 2016, 2:11 pm
by fluffykitty
It would be nice if it could reach an integer zoom. (It's always slightly off.)