Moments of symmetry

A moment of symmetry is a scale built by repeatedly stacking a generating interval and reducing it within a period. In general, this stacking process gives a scale with three step sizes; we have a moment of symmetry when we get only two step sizes. For example, stacking a generator of 707¢ within a period of 1200¢ seven times gives the scale

0, 214, 428, 642, 707, 921, 1135, 1200

with two step sizes 65¢ and 214¢, so this scale is a moment of symmetry.

Stacking the generator six times gives the scale

0, 214, 428, 707, 921, 1135, 1200

with three step sizes 65¢, 214¢, 279¢, so this scale is not a moment of symmetry.

Further reading

Python code
"""
Moments of Symmetry.
"""

import math
from decimal import Decimal


def steps(scale):
    return [b - a for a, b in zip(scale, scale[1:])]


def stern_brocot(generator, period, max_n=50):
    """
    Return Stern-Brocot tree entries ((a, c), (b, d)) for the given generator
    and period, where a/c and b/d are the left and right search interval
    endpoints.

    Each entry gives a MOS of size n = c + d, with generator at scale degree
    m = a + b, step sizes

        s = (d * generator - b * period) / delta
        t = (-c * generator + a * period) / delta

    where delta = a * d - b * c = -1, and c steps of s and d steps of t.

    >>> stern_brocot(Decimal('707'), Decimal('1200'), 5)
    [((0, 1), (1, 0)), ((0, 1), (1, 1)), ((1, 2), (1, 1)), ((1, 2), (2, 3))]
    """
    a, c = 0, 1  # left  = 0/1
    b, d = 1, 0  # right = 1/0 (infinity)
    result = []
    while True:
        m, n = a + b, c + d
        if n > max_n:
            break
        result.append(((a, c), (b, d)))
        if d == 0 or generator * n < period * m:
            b, d = m, n  # mediant is to the right of generator/period
        else:
            a, c = m, n  # mediant is to the left of generator/period
    return result


def mos_sizes(generator, period, max_n=50):
    """
    >>> mos_sizes(Decimal('707'), Decimal('1200'), 20)
    [1, 2, 3, 5, 7, 12, 17]
    """
    return [c + d for (a, c), (b, d) in stern_brocot(generator, period, max_n)]


def repeat_scale(scale, k):
    """Repeat a sub-period scale (starting at 0, ending at period) k times."""
    result = scale
    for _ in range(k - 1):
        result = result + [x + result[-1] for x in scale[1:]]
    return result


def mos(generator, period, n, rotation=0, repeat=1):
    """
    Generate an n-note moment of symmetry scale.

    Stack the generator n times modulo the period and sort. `rotation` selects the
    mode. `repeat` copies the result for multi-period scales.

    >>> mos(Decimal('707'), Decimal('1200'), 5)
    [Decimal('0'), Decimal('214'), Decimal('428'), Decimal('707'), Decimal('921')]

    >>> mos(Decimal('707'), Decimal('1200'), 7)
    [Decimal('0'), Decimal('214'), Decimal('428'), Decimal('642'), Decimal('707'), Decimal('921'), Decimal('1135')]
    """
    generator = Decimal(str(generator))
    period = Decimal(str(period))

    notes = sorted((k * generator) % period for k in range(n))
    scale = notes + [period]
    step_sizes = steps(scale)

    # The Stern-Brocot characterisation of MOS is equivalent to the step-size
    # characterisation above: every size in mos_sizes gives a
    # scale with exactly two step sizes, and vice versa.
    assert n in mos_sizes(generator, period, n), f"{n} not a valid MOS size"
    assert len(set(step_sizes)) <= 2

    # The Stern-Brocot parents for the MOS determine step sizes and step counts
    # These formulae can be derived by mapping the MOS to a two-dimensional keyboard
    for (a, c), (b, d) in stern_brocot(generator, period, n):
        if c + d == n:
            break

    if generator in notes:
        assert notes.index(generator) == a + b

    delta = a * d - b * c
    assert delta == -1
    s = (d * generator - b * period) / delta
    t = (-c * generator + a * period) / delta

    # c steps of s and d steps of t; only include a size if it appears.
    assert set(step_sizes) == ({s} if d == 0 else {s, t})
    if s != t:
        assert step_sizes.count(s) == c and step_sizes.count(t) == d

    # (a, b) is determined by (c, d) and generator/period
    if d > 0:
        assert a == math.floor(generator * c / period)
        assert b == math.ceil(generator * d / period)

    # Return requested mode and repeat

    shift = notes[rotation]
    tail = [x - shift for x in notes[rotation:]]
    head = [x - shift + period for x in notes[:rotation]]
    notes = tail + head
    scale = repeat_scale(notes + [period], repeat)

    return scale[:-1]

Scales

FileCall
xen18-erlich-amity-02 mos(Decimal('860.38'), Decimal('1199.85'), 2, rotation=1)
xen18-erlich-amity-03 mos(Decimal('860.38'), Decimal('1199.85'), 3, rotation=2)
xen18-erlich-amity-04 mos(Decimal('860.38'), Decimal('1199.85'), 4, rotation=2)
xen18-erlich-amity-07 mos(Decimal('860.38'), Decimal('1199.85'), 7, rotation=1)
xen18-erlich-amity-11 mos(Decimal('860.38'), Decimal('1199.85'), 11, rotation=7)
xen18-erlich-amity-18 mos(Decimal('860.38'), Decimal('1199.85'), 18, rotation=9)
xen18-erlich-amity-25 mos(Decimal('860.38'), Decimal('1199.85'), 25, rotation=16)
xen18-erlich-amity-32 mos(Decimal('860.38'), Decimal('1199.85'), 32, rotation=16)
xen18-erlich-amity-39 mos(Decimal('860.38'), Decimal('1199.85'), 39, rotation=25)
xen18-erlich-amity-46 mos(Decimal('860.38'), Decimal('1199.85'), 46, rotation=23)
xen18-erlich-amity-53 mos(Decimal('860.38'), Decimal('1199.85'), 53, rotation=34)
xen18-erlich-augene-03 mos(Decimal('92.46'), Decimal('399.02'), 1, repeat=3)
xen18-erlich-augene-06 mos(Decimal('92.46'), Decimal('399.02'), 2, rotation=1, repeat=3)
xen18-erlich-augene-09 mos(Decimal('92.46'), Decimal('399.02'), 3, rotation=1, repeat=3)
xen18-erlich-augene-12 mos(Decimal('92.46'), Decimal('399.02'), 4, rotation=2, repeat=3)
xen18-erlich-augene-15 mos(Decimal('92.46'), Decimal('399.02'), 5, rotation=2, repeat=3)
xen18-erlich-augene-27 mos(Decimal('92.46'), Decimal('399.02'), 9, rotation=8, repeat=3)
xen18-erlich-augene-39 mos(Decimal('92.46'), Decimal('399.02'), 13, rotation=5, repeat=3)
xen18-erlich-augmented-03 mos(Decimal('93.15'), Decimal('399.02'), 1, repeat=3)
xen18-erlich-augmented-06 mos(Decimal('93.15'), Decimal('399.02'), 2, rotation=1, repeat=3)
xen18-erlich-augmented-09 mos(Decimal('93.15'), Decimal('399.02'), 3, rotation=1, repeat=3)
xen18-erlich-augmented-12 mos(Decimal('93.15'), Decimal('399.02'), 4, rotation=2, repeat=3)
xen18-erlich-augmented-15 mos(Decimal('93.15'), Decimal('399.02'), 5, rotation=2, repeat=3)
xen18-erlich-augmented-27 mos(Decimal('93.15'), Decimal('399.02'), 9, rotation=8, repeat=3)
xen18-erlich-august-03 mos(Decimal('107.31'), Decimal('399.99'), 1, repeat=3)
xen18-erlich-august-06 mos(Decimal('107.31'), Decimal('399.99'), 2, rotation=1, repeat=3)
xen18-erlich-august-09 mos(Decimal('107.31'), Decimal('399.99'), 3, rotation=1, repeat=3)
xen18-erlich-august-12 mos(Decimal('107.31'), Decimal('399.99'), 4, rotation=2, repeat=3)
xen18-erlich-august-21 mos(Decimal('107.31'), Decimal('399.99'), 7, rotation=6, repeat=3)
xen18-erlich-beatles-02 mos(Decimal('842.38'), Decimal('1197.10'), 2, rotation=1)
xen18-erlich-beatles-03 mos(Decimal('842.38'), Decimal('1197.10'), 3, rotation=2)
xen18-erlich-beatles-04 mos(Decimal('842.38'), Decimal('1197.10'), 4, rotation=2)
xen18-erlich-beatles-07 mos(Decimal('842.38'), Decimal('1197.10'), 7, rotation=1)
xen18-erlich-beatles-10 mos(Decimal('842.38'), Decimal('1197.10'), 10, rotation=5)
xen18-erlich-beatles-17 mos(Decimal('842.38'), Decimal('1197.10'), 17, rotation=11)
xen18-erlich-beatles-27 mos(Decimal('842.38'), Decimal('1197.10'), 27, rotation=4)
xen18-erlich-beatles-37 mos(Decimal('842.38'), Decimal('1197.10'), 37, rotation=24)
xen18-erlich-blacksmith-05 mos(Decimal('155.35'), Decimal('239.18'), 1, repeat=5)
xen18-erlich-blacksmith-10 mos(Decimal('155.35'), Decimal('239.18'), 2, rotation=1, repeat=5)
xen18-erlich-blacksmith-15 mos(Decimal('155.35'), Decimal('239.18'), 3, rotation=2, repeat=5)
xen18-erlich-blacksmith-25 mos(Decimal('155.35'), Decimal('239.18'), 5, rotation=1, repeat=5)
xen18-erlich-blackwood-05 mos(Decimal('158.78'), Decimal('238.87'), 1, repeat=5)
xen18-erlich-blackwood-10 mos(Decimal('158.78'), Decimal('238.87'), 2, rotation=1, repeat=5)
xen18-erlich-blackwood-15 mos(Decimal('158.78'), Decimal('238.87'), 3, rotation=2, repeat=5)
xen18-erlich-blackwood-25 mos(Decimal('158.78'), Decimal('238.87'), 5, rotation=1, repeat=5)
xen18-erlich-bug-02 mos(Decimal('260.3'), Decimal('1200.0'), 2, rotation=1)
xen18-erlich-bug-03 mos(Decimal('260.3'), Decimal('1200.0'), 3, rotation=1)
xen18-erlich-bug-04 mos(Decimal('260.3'), Decimal('1200.0'), 4, rotation=2)
xen18-erlich-bug-05 mos(Decimal('260.3'), Decimal('1200.0'), 5, rotation=2)
xen18-erlich-bug-09 mos(Decimal('260.3'), Decimal('1200.0'), 9, rotation=8)
xen18-erlich-catler-12 mos(Decimal('75.22'), Decimal('99.81'), 1, repeat=12)
xen18-erlich-catler-24 mos(Decimal('75.22'), Decimal('99.81'), 2, rotation=1, repeat=12)
xen18-erlich-catler-36 mos(Decimal('75.22'), Decimal('99.81'), 3, rotation=2, repeat=12)
xen18-erlich-catler-48 mos(Decimal('75.22'), Decimal('99.81'), 4, rotation=2, repeat=12)
xen18-erlich-compton-12 mos(Decimal('15.13'), Decimal('100.05'), 1, repeat=12)
xen18-erlich-compton-24 mos(Decimal('15.13'), Decimal('100.05'), 2, rotation=1, repeat=12)
xen18-erlich-compton-36 mos(Decimal('15.13'), Decimal('100.05'), 3, rotation=1, repeat=12)
xen18-erlich-compton-48 mos(Decimal('15.13'), Decimal('100.05'), 4, rotation=2, repeat=12)
xen18-erlich-compton-60 mos(Decimal('15.13'), Decimal('100.05'), 5, rotation=2, repeat=12)
xen18-erlich-compton-72 mos(Decimal('15.13'), Decimal('100.05'), 6, rotation=3, repeat=12)
xen18-erlich-cynder-02 mos(Decimal('969.18'), Decimal('1201.7'), 2, rotation=1)
xen18-erlich-cynder-03 mos(Decimal('969.18'), Decimal('1201.7'), 3, rotation=2)
xen18-erlich-cynder-04 mos(Decimal('969.18'), Decimal('1201.7'), 4, rotation=2)
xen18-erlich-cynder-05 mos(Decimal('969.18'), Decimal('1201.7'), 5, rotation=3)
xen18-erlich-cynder-06 mos(Decimal('969.18'), Decimal('1201.7'), 6, rotation=3)
xen18-erlich-cynder-11 mos(Decimal('969.18'), Decimal('1201.7'), 11, rotation=1)
xen18-erlich-cynder-16 mos(Decimal('969.18'), Decimal('1201.7'), 16, rotation=8)
xen18-erlich-cynder-21 mos(Decimal('969.18'), Decimal('1201.7'), 21, rotation=2)
xen18-erlich-cynder-26 mos(Decimal('969.18'), Decimal('1201.7'), 26, rotation=13)
xen18-erlich-cynder-31 mos(Decimal('969.18'), Decimal('1201.7'), 31, rotation=3)
xen18-erlich-dicot-02 mos(Decimal('353.22'), Decimal('1207.66'), 2, rotation=1)
xen18-erlich-dicot-03 mos(Decimal('353.22'), Decimal('1207.66'), 3, rotation=1)
xen18-erlich-dicot-04 mos(Decimal('353.22'), Decimal('1207.66'), 4, rotation=2)
xen18-erlich-dicot-07 mos(Decimal('353.22'), Decimal('1207.66'), 7, rotation=6)
xen18-erlich-dicot-10 mos(Decimal('353.22'), Decimal('1207.66'), 10, rotation=5)
xen18-erlich-dicot-17 mos(Decimal('353.22'), Decimal('1207.66'), 17, rotation=6)
xen18-erlich-dimipent-04 mos(Decimal('197.49'), Decimal('299.16'), 1, repeat=4)
xen18-erlich-dimipent-08 mos(Decimal('197.49'), Decimal('299.16'), 2, rotation=1, repeat=4)
xen18-erlich-dimipent-12 mos(Decimal('197.49'), Decimal('299.16'), 3, rotation=2, repeat=4)
xen18-erlich-dimipent-20 mos(Decimal('197.49'), Decimal('299.16'), 5, rotation=1, repeat=4)
xen18-erlich-dimisept-04 mos(Decimal('197.08'), Decimal('298.53'), 1, repeat=4)
xen18-erlich-dimisept-08 mos(Decimal('197.08'), Decimal('298.53'), 2, rotation=1, repeat=4)
xen18-erlich-dimisept-12 mos(Decimal('197.08'), Decimal('298.53'), 3, rotation=2, repeat=4)
xen18-erlich-dimisept-20 mos(Decimal('197.08'), Decimal('298.53'), 5, rotation=1, repeat=4)
xen18-erlich-dominant-02 mos(Decimal('495.88'), Decimal('1195.23'), 2, rotation=1)
xen18-erlich-dominant-03 mos(Decimal('495.88'), Decimal('1195.23'), 3, rotation=1)
xen18-erlich-dominant-05 mos(Decimal('495.88'), Decimal('1195.23'), 5, rotation=4)
xen18-erlich-dominant-07 mos(Decimal('495.88'), Decimal('1195.23'), 7, rotation=2)
xen18-erlich-dominant-12 mos(Decimal('495.88'), Decimal('1195.23'), 12, rotation=6)
xen18-erlich-dominant-17 mos(Decimal('495.88'), Decimal('1195.23'), 17, rotation=5)
xen18-erlich-doublewide-02 mos(Decimal('326.96'), Decimal('599.28'), 1, repeat=2)
xen18-erlich-doublewide-04 mos(Decimal('326.96'), Decimal('599.28'), 2, rotation=1, repeat=2)
xen18-erlich-doublewide-06 mos(Decimal('326.96'), Decimal('599.28'), 3, rotation=2, repeat=2)
xen18-erlich-doublewide-10 mos(Decimal('326.96'), Decimal('599.28'), 5, rotation=1, repeat=2)
xen18-erlich-doublewide-14 mos(Decimal('326.96'), Decimal('599.28'), 7, rotation=5, repeat=2)
xen18-erlich-doublewide-18 mos(Decimal('326.96'), Decimal('599.28'), 9, rotation=2, repeat=2)
xen18-erlich-doublewide-22 mos(Decimal('326.96'), Decimal('599.28'), 11, rotation=8, repeat=2)
xen18-erlich-doublewide-40 mos(Decimal('326.96'), Decimal('599.28'), 20, rotation=10, repeat=2)
xen18-erlich-ennealimmal-09 mos(Decimal('84.313'), Decimal('133.337'), 1, repeat=9)
xen18-erlich-ennealimmal-18 mos(Decimal('84.313'), Decimal('133.337'), 2, rotation=1, repeat=9)
xen18-erlich-ennealimmal-27 mos(Decimal('84.313'), Decimal('133.337'), 3, rotation=2, repeat=9)
xen18-erlich-ennealimmal-45 mos(Decimal('84.313'), Decimal('133.337'), 5, rotation=1, repeat=9)
xen18-erlich-ennealimmal-72 mos(Decimal('84.313'), Decimal('133.337'), 8, rotation=4, repeat=9)
xen18-erlich-ennealimmal-99 mos(Decimal('84.313'), Decimal('133.337'), 11, rotation=2, repeat=9)
xen18-erlich-father-02 mos(Decimal('447.4'), Decimal('1185.9'), 2, rotation=1)
xen18-erlich-father-03 mos(Decimal('447.4'), Decimal('1185.9'), 3, rotation=1)
xen18-erlich-father-05 mos(Decimal('447.4'), Decimal('1185.9'), 5, rotation=4)
xen18-erlich-father-08 mos(Decimal('447.4'), Decimal('1185.9'), 8, rotation=4)
xen18-erlich-flattone-02 mos(Decimal('507.14'), Decimal('1202.54'), 2, rotation=1)
xen18-erlich-flattone-03 mos(Decimal('507.14'), Decimal('1202.54'), 3, rotation=1)
xen18-erlich-flattone-05 mos(Decimal('507.14'), Decimal('1202.54'), 5, rotation=4)
xen18-erlich-flattone-07 mos(Decimal('507.14'), Decimal('1202.54'), 7, rotation=2)
xen18-erlich-flattone-12 mos(Decimal('507.14'), Decimal('1202.54'), 12, rotation=6)
xen18-erlich-flattone-19 mos(Decimal('507.14'), Decimal('1202.54'), 19, rotation=15)
xen18-erlich-flattone-26 mos(Decimal('507.14'), Decimal('1202.54'), 26, rotation=13)
xen18-erlich-flattone-45 mos(Decimal('507.14'), Decimal('1202.54'), 45, rotation=13)
xen18-erlich-garibaldi-02 mos(Decimal('702.64'), Decimal('1200.76'), 2, rotation=1)
xen18-erlich-garibaldi-03 mos(Decimal('702.64'), Decimal('1200.76'), 3, rotation=2)
xen18-erlich-garibaldi-05 mos(Decimal('702.64'), Decimal('1200.76'), 5, rotation=1)
xen18-erlich-garibaldi-07 mos(Decimal('702.64'), Decimal('1200.76'), 7, rotation=5)
xen18-erlich-garibaldi-12 mos(Decimal('702.64'), Decimal('1200.76'), 12, rotation=6)
xen18-erlich-garibaldi-17 mos(Decimal('702.64'), Decimal('1200.76'), 17, rotation=12)
xen18-erlich-garibaldi-29 mos(Decimal('702.64'), Decimal('1200.76'), 29, rotation=6)
xen18-erlich-garibaldi-41 mos(Decimal('702.64'), Decimal('1200.76'), 41, rotation=29)
xen18-erlich-garibaldi-53 mos(Decimal('702.64'), Decimal('1200.76'), 53, rotation=11)
xen18-erlich-hanson-02 mos(Decimal('317.07'), Decimal('1200.29'), 2, rotation=1)
xen18-erlich-hanson-03 mos(Decimal('317.07'), Decimal('1200.29'), 3, rotation=1)
xen18-erlich-hanson-04 mos(Decimal('317.07'), Decimal('1200.29'), 4, rotation=2)
xen18-erlich-hanson-07 mos(Decimal('317.07'), Decimal('1200.29'), 7, rotation=6)
xen18-erlich-hanson-11 mos(Decimal('317.07'), Decimal('1200.29'), 11, rotation=4)
xen18-erlich-hanson-15 mos(Decimal('317.07'), Decimal('1200.29'), 15, rotation=13)
xen18-erlich-hanson-19 mos(Decimal('317.07'), Decimal('1200.29'), 19, rotation=7)
xen18-erlich-hanson-34 mos(Decimal('317.07'), Decimal('1200.29'), 34, rotation=17)
xen18-erlich-hanson-53 mos(Decimal('317.07'), Decimal('1200.29'), 53, rotation=46)
xen18-erlich-hedgehog-02 mos(Decimal('436.13'), Decimal('598.45'), 1, repeat=2)
xen18-erlich-hedgehog-04 mos(Decimal('436.13'), Decimal('598.45'), 2, rotation=1, repeat=2)
xen18-erlich-hedgehog-06 mos(Decimal('436.13'), Decimal('598.45'), 3, rotation=2, repeat=2)
xen18-erlich-hedgehog-08 mos(Decimal('436.13'), Decimal('598.45'), 4, rotation=2, repeat=2)
xen18-erlich-hedgehog-14 mos(Decimal('436.13'), Decimal('598.45'), 7, rotation=1, repeat=2)
xen18-erlich-hedgehog-22 mos(Decimal('436.13'), Decimal('598.45'), 11, rotation=7, repeat=2)
xen18-erlich-hedgehog-30 mos(Decimal('436.13'), Decimal('598.45'), 15, rotation=2, repeat=2)
xen18-erlich-helmholtz-02 mos(Decimal('701.79'), Decimal('1200.07'), 2, rotation=1)
xen18-erlich-helmholtz-03 mos(Decimal('701.79'), Decimal('1200.07'), 3, rotation=2)
xen18-erlich-helmholtz-05 mos(Decimal('701.79'), Decimal('1200.07'), 5, rotation=1)
xen18-erlich-helmholtz-07 mos(Decimal('701.79'), Decimal('1200.07'), 7, rotation=5)
xen18-erlich-helmholtz-12 mos(Decimal('701.79'), Decimal('1200.07'), 12, rotation=6)
xen18-erlich-helmholtz-17 mos(Decimal('701.79'), Decimal('1200.07'), 17, rotation=12)
xen18-erlich-helmholtz-29 mos(Decimal('701.79'), Decimal('1200.07'), 29, rotation=6)
xen18-erlich-helmholtz-41 mos(Decimal('701.79'), Decimal('1200.07'), 41, rotation=29)
xen18-erlich-helmholtz-53 mos(Decimal('701.79'), Decimal('1200.07'), 53, rotation=11)
xen18-erlich-injera-02 mos(Decimal('507.28'), Decimal('600.89'), 1, repeat=2)
xen18-erlich-injera-04 mos(Decimal('507.28'), Decimal('600.89'), 2, rotation=1, repeat=2)
xen18-erlich-injera-06 mos(Decimal('507.28'), Decimal('600.89'), 3, rotation=2, repeat=2)
xen18-erlich-injera-08 mos(Decimal('507.28'), Decimal('600.89'), 4, rotation=2, repeat=2)
xen18-erlich-injera-10 mos(Decimal('507.28'), Decimal('600.89'), 5, rotation=3, repeat=2)
xen18-erlich-injera-12 mos(Decimal('507.28'), Decimal('600.89'), 6, rotation=3, repeat=2)
xen18-erlich-injera-14 mos(Decimal('507.28'), Decimal('600.89'), 7, rotation=4, repeat=2)
xen18-erlich-injera-26 mos(Decimal('507.28'), Decimal('600.89'), 13, rotation=1, repeat=2)
xen18-erlich-injera-38 mos(Decimal('507.28'), Decimal('600.89'), 19, rotation=11, repeat=2)
xen18-erlich-keemun-02 mos(Decimal('317.84'), Decimal('1203.19'), 2, rotation=1)
xen18-erlich-keemun-03 mos(Decimal('317.84'), Decimal('1203.19'), 3, rotation=1)
xen18-erlich-keemun-04 mos(Decimal('317.84'), Decimal('1203.19'), 4, rotation=2)
xen18-erlich-keemun-07 mos(Decimal('317.84'), Decimal('1203.19'), 7, rotation=6)
xen18-erlich-keemun-11 mos(Decimal('317.84'), Decimal('1203.19'), 11, rotation=4)
xen18-erlich-keemun-15 mos(Decimal('317.84'), Decimal('1203.19'), 15, rotation=13)
xen18-erlich-keemun-19 mos(Decimal('317.84'), Decimal('1203.19'), 19, rotation=7)
xen18-erlich-keemun-34 mos(Decimal('317.84'), Decimal('1203.19'), 34, rotation=17)
xen18-erlich-lemba-02 mos(Decimal('230.87'), Decimal('601.70'), 1, repeat=2)
xen18-erlich-lemba-04 mos(Decimal('230.87'), Decimal('601.70'), 2, rotation=1, repeat=2)
xen18-erlich-lemba-06 mos(Decimal('230.87'), Decimal('601.70'), 3, rotation=1, repeat=2)
xen18-erlich-lemba-10 mos(Decimal('230.87'), Decimal('601.70'), 5, rotation=4, repeat=2)
xen18-erlich-lemba-16 mos(Decimal('230.87'), Decimal('601.70'), 8, rotation=4, repeat=2)
xen18-erlich-lemba-26 mos(Decimal('230.87'), Decimal('601.70'), 13, rotation=4, repeat=2)
xen18-erlich-lemba-42 mos(Decimal('230.87'), Decimal('601.70'), 21, rotation=17, repeat=2)
xen18-erlich-liese-02 mos(Decimal('569.05'), Decimal('1202.62'), 2, rotation=1)
xen18-erlich-liese-03 mos(Decimal('569.05'), Decimal('1202.62'), 3, rotation=1)
xen18-erlich-liese-05 mos(Decimal('569.05'), Decimal('1202.62'), 5, rotation=4)
xen18-erlich-liese-07 mos(Decimal('569.05'), Decimal('1202.62'), 7, rotation=2)
xen18-erlich-liese-09 mos(Decimal('569.05'), Decimal('1202.62'), 9, rotation=7)
xen18-erlich-liese-11 mos(Decimal('569.05'), Decimal('1202.62'), 11, rotation=3)
xen18-erlich-liese-13 mos(Decimal('569.05'), Decimal('1202.62'), 13, rotation=10)
xen18-erlich-liese-15 mos(Decimal('569.05'), Decimal('1202.62'), 15, rotation=4)
xen18-erlich-liese-17 mos(Decimal('569.05'), Decimal('1202.62'), 17, rotation=13)
xen18-erlich-liese-19 mos(Decimal('569.05'), Decimal('1202.62'), 19, rotation=5)
xen18-erlich-liese-36 mos(Decimal('569.05'), Decimal('1202.62'), 36, rotation=18)
xen18-erlich-liese-55 mos(Decimal('569.05'), Decimal('1202.62'), 55, rotation=42)
xen18-erlich-luna-02 mos(Decimal('193.196'), Decimal('1199.98'), 2, rotation=1)
xen18-erlich-luna-03 mos(Decimal('193.196'), Decimal('1199.98'), 3, rotation=1)
xen18-erlich-luna-04 mos(Decimal('193.196'), Decimal('1199.98'), 4, rotation=2)
xen18-erlich-luna-05 mos(Decimal('193.196'), Decimal('1199.98'), 5, rotation=2)
xen18-erlich-luna-06 mos(Decimal('193.196'), Decimal('1199.98'), 6, rotation=3)
xen18-erlich-luna-07 mos(Decimal('193.196'), Decimal('1199.98'), 7, rotation=3)
xen18-erlich-luna-13 mos(Decimal('193.196'), Decimal('1199.98'), 13, rotation=12)
xen18-erlich-luna-19 mos(Decimal('193.196'), Decimal('1199.98'), 19, rotation=8)
xen18-erlich-luna-25 mos(Decimal('193.196'), Decimal('1199.98'), 25, rotation=23)
xen18-erlich-luna-31 mos(Decimal('193.196'), Decimal('1199.98'), 31, rotation=13)
xen18-erlich-luna-56 mos(Decimal('193.196'), Decimal('1199.98'), 56, rotation=28)
xen18-erlich-luna-87 mos(Decimal('193.196'), Decimal('1199.98'), 87, rotation=80)
xen18-erlich-magic-02 mos(Decimal('380.80'), Decimal('1201.28'), 2, rotation=1)
xen18-erlich-magic-03 mos(Decimal('380.80'), Decimal('1201.28'), 3, rotation=1)
xen18-erlich-magic-04 mos(Decimal('380.80'), Decimal('1201.28'), 4, rotation=2)
xen18-erlich-magic-07 mos(Decimal('380.80'), Decimal('1201.28'), 7, rotation=6)
xen18-erlich-magic-10 mos(Decimal('380.80'), Decimal('1201.28'), 10, rotation=5)
xen18-erlich-magic-13 mos(Decimal('380.80'), Decimal('1201.28'), 13, rotation=11)
xen18-erlich-magic-16 mos(Decimal('380.80'), Decimal('1201.28'), 16, rotation=8)
xen18-erlich-magic-19 mos(Decimal('380.80'), Decimal('1201.28'), 19, rotation=16)
xen18-erlich-magic-22 mos(Decimal('380.80'), Decimal('1201.28'), 22, rotation=11)
xen18-erlich-magic-41 mos(Decimal('380.80'), Decimal('1201.28'), 41, rotation=14)
xen18-erlich-magic-60 mos(Decimal('380.80'), Decimal('1201.28'), 60, rotation=30)
xen18-erlich-mavila-02 mos(Decimal('685.03'), Decimal('1206.55'), 2, rotation=1)
xen18-erlich-mavila-03 mos(Decimal('685.03'), Decimal('1206.55'), 3, rotation=2)
xen18-erlich-mavila-05 mos(Decimal('685.03'), Decimal('1206.55'), 5, rotation=1)
xen18-erlich-mavila-07 mos(Decimal('685.03'), Decimal('1206.55'), 7, rotation=5)
xen18-erlich-mavila-09 mos(Decimal('685.03'), Decimal('1206.55'), 9, rotation=2)
xen18-erlich-mavila-16 mos(Decimal('685.03'), Decimal('1206.55'), 16, rotation=8)
xen18-erlich-meantone-02 mos(Decimal('504.13'), Decimal('1201.70'), 2, rotation=1)
xen18-erlich-meantone-03 mos(Decimal('504.13'), Decimal('1201.70'), 3, rotation=1)
xen18-erlich-meantone-05 mos(Decimal('504.13'), Decimal('1201.70'), 5, rotation=4)
xen18-erlich-meantone-07 mos(Decimal('504.13'), Decimal('1201.70'), 7, rotation=2)
xen18-erlich-meantone-12 mos(Decimal('504.13'), Decimal('1201.70'), 12, rotation=6)
xen18-erlich-meantone-19 mos(Decimal('504.13'), Decimal('1201.70'), 19, rotation=15)
xen18-erlich-meantone-31 mos(Decimal('504.13'), Decimal('1201.70'), 31, rotation=9)
xen18-erlich-meantone-50 mos(Decimal('504.13'), Decimal('1201.70'), 50, rotation=25)
xen18-erlich-miracle-02 mos(Decimal('116.72'), Decimal('1200.63'), 2, rotation=1)
xen18-erlich-miracle-03 mos(Decimal('116.72'), Decimal('1200.63'), 3, rotation=1)
xen18-erlich-miracle-04 mos(Decimal('116.72'), Decimal('1200.63'), 4, rotation=2)
xen18-erlich-miracle-05 mos(Decimal('116.72'), Decimal('1200.63'), 5, rotation=2)
xen18-erlich-miracle-06 mos(Decimal('116.72'), Decimal('1200.63'), 6, rotation=3)
xen18-erlich-miracle-07 mos(Decimal('116.72'), Decimal('1200.63'), 7, rotation=3)
xen18-erlich-miracle-08 mos(Decimal('116.72'), Decimal('1200.63'), 8, rotation=4)
xen18-erlich-miracle-09 mos(Decimal('116.72'), Decimal('1200.63'), 9, rotation=4)
xen18-erlich-miracle-10 mos(Decimal('116.72'), Decimal('1200.63'), 10, rotation=5)
xen18-erlich-miracle-11 mos(Decimal('116.72'), Decimal('1200.63'), 11, rotation=5)
xen18-erlich-miracle-21 mos(Decimal('116.72'), Decimal('1200.63'), 21, rotation=20)
xen18-erlich-miracle-31 mos(Decimal('116.72'), Decimal('1200.63'), 31, rotation=14)
xen18-erlich-miracle-41 mos(Decimal('116.72'), Decimal('1200.63'), 41, rotation=39)
xen18-erlich-miracle-72 mos(Decimal('116.72'), Decimal('1200.63'), 72, rotation=36)
xen18-erlich-myna-02 mos(Decimal('888.94'), Decimal('1198.83'), 2, rotation=1)
xen18-erlich-myna-03 mos(Decimal('888.94'), Decimal('1198.83'), 3, rotation=2)
xen18-erlich-myna-04 mos(Decimal('888.94'), Decimal('1198.83'), 4, rotation=2)
xen18-erlich-myna-07 mos(Decimal('888.94'), Decimal('1198.83'), 7, rotation=1)
xen18-erlich-myna-11 mos(Decimal('888.94'), Decimal('1198.83'), 11, rotation=7)
xen18-erlich-myna-15 mos(Decimal('888.94'), Decimal('1198.83'), 15, rotation=2)
xen18-erlich-myna-19 mos(Decimal('888.94'), Decimal('1198.83'), 19, rotation=12)
xen18-erlich-myna-23 mos(Decimal('888.94'), Decimal('1198.83'), 23, rotation=3)
xen18-erlich-myna-27 mos(Decimal('888.94'), Decimal('1198.83'), 27, rotation=17)
xen18-erlich-myna-31 mos(Decimal('888.94'), Decimal('1198.83'), 31, rotation=4)
xen18-erlich-myna-58 mos(Decimal('888.94'), Decimal('1198.83'), 58, rotation=29)
xen18-erlich-nautilus-02 mos(Decimal('1119.69'), Decimal('1202.66'), 2, rotation=1)
xen18-erlich-nautilus-03 mos(Decimal('1119.69'), Decimal('1202.66'), 3, rotation=2)
xen18-erlich-nautilus-04 mos(Decimal('1119.69'), Decimal('1202.66'), 4, rotation=2)
xen18-erlich-nautilus-05 mos(Decimal('1119.69'), Decimal('1202.66'), 5, rotation=3)
xen18-erlich-nautilus-06 mos(Decimal('1119.69'), Decimal('1202.66'), 6, rotation=3)
xen18-erlich-nautilus-07 mos(Decimal('1119.69'), Decimal('1202.66'), 7, rotation=4)
xen18-erlich-nautilus-08 mos(Decimal('1119.69'), Decimal('1202.66'), 8, rotation=4)
xen18-erlich-nautilus-09 mos(Decimal('1119.69'), Decimal('1202.66'), 9, rotation=5)
xen18-erlich-nautilus-10 mos(Decimal('1119.69'), Decimal('1202.66'), 10, rotation=5)
xen18-erlich-nautilus-11 mos(Decimal('1119.69'), Decimal('1202.66'), 11, rotation=6)
xen18-erlich-nautilus-12 mos(Decimal('1119.69'), Decimal('1202.66'), 12, rotation=6)
xen18-erlich-nautilus-13 mos(Decimal('1119.69'), Decimal('1202.66'), 13, rotation=7)
xen18-erlich-nautilus-14 mos(Decimal('1119.69'), Decimal('1202.66'), 14, rotation=7)
xen18-erlich-nautilus-15 mos(Decimal('1119.69'), Decimal('1202.66'), 15, rotation=8)
xen18-erlich-nautilus-29 mos(Decimal('1119.69'), Decimal('1202.66'), 29, rotation=1)
xen18-erlich-nautilus-43 mos(Decimal('1119.69'), Decimal('1202.66'), 43, rotation=23)
xen18-erlich-negripent-02 mos(Decimal('1075.68'), Decimal('1201.82'), 2, rotation=1)
xen18-erlich-negripent-03 mos(Decimal('1075.68'), Decimal('1201.82'), 3, rotation=2)
xen18-erlich-negripent-04 mos(Decimal('1075.68'), Decimal('1201.82'), 4, rotation=2)
xen18-erlich-negripent-05 mos(Decimal('1075.68'), Decimal('1201.82'), 5, rotation=3)
xen18-erlich-negripent-06 mos(Decimal('1075.68'), Decimal('1201.82'), 6, rotation=3)
xen18-erlich-negripent-07 mos(Decimal('1075.68'), Decimal('1201.82'), 7, rotation=4)
xen18-erlich-negripent-08 mos(Decimal('1075.68'), Decimal('1201.82'), 8, rotation=4)
xen18-erlich-negripent-09 mos(Decimal('1075.68'), Decimal('1201.82'), 9, rotation=5)
xen18-erlich-negripent-10 mos(Decimal('1075.68'), Decimal('1201.82'), 10, rotation=5)
xen18-erlich-negripent-19 mos(Decimal('1075.68'), Decimal('1201.82'), 19, rotation=1)
xen18-erlich-negripent-29 mos(Decimal('1075.68'), Decimal('1201.82'), 29, rotation=16)
xen18-erlich-negrisept-02 mos(Decimal('1078.35'), Decimal('1203.19'), 2, rotation=1)
xen18-erlich-negrisept-03 mos(Decimal('1078.35'), Decimal('1203.19'), 3, rotation=2)
xen18-erlich-negrisept-04 mos(Decimal('1078.35'), Decimal('1203.19'), 4, rotation=2)
xen18-erlich-negrisept-05 mos(Decimal('1078.35'), Decimal('1203.19'), 5, rotation=3)
xen18-erlich-negrisept-06 mos(Decimal('1078.35'), Decimal('1203.19'), 6, rotation=3)
xen18-erlich-negrisept-07 mos(Decimal('1078.35'), Decimal('1203.19'), 7, rotation=4)
xen18-erlich-negrisept-08 mos(Decimal('1078.35'), Decimal('1203.19'), 8, rotation=4)
xen18-erlich-negrisept-09 mos(Decimal('1078.35'), Decimal('1203.19'), 9, rotation=5)
xen18-erlich-negrisept-10 mos(Decimal('1078.35'), Decimal('1203.19'), 10, rotation=5)
xen18-erlich-negrisept-19 mos(Decimal('1078.35'), Decimal('1203.19'), 19, rotation=1)
xen18-erlich-negrisept-29 mos(Decimal('1078.35'), Decimal('1203.19'), 29, rotation=16)
xen18-erlich-orson-02 mos(Decimal('271.65'), Decimal('1200.24'), 2, rotation=1)
xen18-erlich-orson-03 mos(Decimal('271.65'), Decimal('1200.24'), 3, rotation=1)
xen18-erlich-orson-04 mos(Decimal('271.65'), Decimal('1200.24'), 4, rotation=2)
xen18-erlich-orson-05 mos(Decimal('271.65'), Decimal('1200.24'), 5, rotation=2)
xen18-erlich-orson-09 mos(Decimal('271.65'), Decimal('1200.24'), 9, rotation=8)
xen18-erlich-orson-13 mos(Decimal('271.65'), Decimal('1200.24'), 13, rotation=5)
xen18-erlich-orson-22 mos(Decimal('271.65'), Decimal('1200.24'), 22, rotation=11)
xen18-erlich-orson-31 mos(Decimal('271.65'), Decimal('1200.24'), 31, rotation=12)
xen18-erlich-orson-53 mos(Decimal('271.65'), Decimal('1200.24'), 53, rotation=47)
xen18-erlich-orwell-02 mos(Decimal('271.49'), Decimal('1199.53'), 2, rotation=1)
xen18-erlich-orwell-03 mos(Decimal('271.49'), Decimal('1199.53'), 3, rotation=1)
xen18-erlich-orwell-04 mos(Decimal('271.49'), Decimal('1199.53'), 4, rotation=2)
xen18-erlich-orwell-05 mos(Decimal('271.49'), Decimal('1199.53'), 5, rotation=2)
xen18-erlich-orwell-09 mos(Decimal('271.49'), Decimal('1199.53'), 9, rotation=8)
xen18-erlich-orwell-13 mos(Decimal('271.49'), Decimal('1199.53'), 13, rotation=5)
xen18-erlich-orwell-22 mos(Decimal('271.49'), Decimal('1199.53'), 22, rotation=11)
xen18-erlich-orwell-31 mos(Decimal('271.49'), Decimal('1199.53'), 31, rotation=12)
xen18-erlich-orwell-53 mos(Decimal('271.49'), Decimal('1199.53'), 53, rotation=47)
xen18-erlich-pajara-02 mos(Decimal('491.88'), Decimal('598.45'), 1, repeat=2)
xen18-erlich-pajara-04 mos(Decimal('491.88'), Decimal('598.45'), 2, rotation=1, repeat=2)
xen18-erlich-pajara-06 mos(Decimal('491.88'), Decimal('598.45'), 3, rotation=2, repeat=2)
xen18-erlich-pajara-08 mos(Decimal('491.88'), Decimal('598.45'), 4, rotation=2, repeat=2)
xen18-erlich-pajara-10 mos(Decimal('491.88'), Decimal('598.45'), 5, rotation=3, repeat=2)
xen18-erlich-pajara-12 mos(Decimal('491.88'), Decimal('598.45'), 6, rotation=3, repeat=2)
xen18-erlich-pajara-22 mos(Decimal('491.88'), Decimal('598.45'), 11, rotation=1, repeat=2)
xen18-erlich-pajara-34 mos(Decimal('491.88'), Decimal('598.45'), 17, rotation=10, repeat=2)
xen18-erlich-passion-02 mos(Decimal('98.40'), Decimal('1198.31'), 2, rotation=1)
xen18-erlich-passion-03 mos(Decimal('98.40'), Decimal('1198.31'), 3, rotation=1)
xen18-erlich-passion-04 mos(Decimal('98.40'), Decimal('1198.31'), 4, rotation=2)
xen18-erlich-passion-05 mos(Decimal('98.40'), Decimal('1198.31'), 5, rotation=2)
xen18-erlich-passion-06 mos(Decimal('98.40'), Decimal('1198.31'), 6, rotation=3)
xen18-erlich-passion-07 mos(Decimal('98.40'), Decimal('1198.31'), 7, rotation=3)
xen18-erlich-passion-08 mos(Decimal('98.40'), Decimal('1198.31'), 8, rotation=4)
xen18-erlich-passion-09 mos(Decimal('98.40'), Decimal('1198.31'), 9, rotation=4)
xen18-erlich-passion-10 mos(Decimal('98.40'), Decimal('1198.31'), 10, rotation=5)
xen18-erlich-passion-11 mos(Decimal('98.40'), Decimal('1198.31'), 11, rotation=5)
xen18-erlich-passion-12 mos(Decimal('98.40'), Decimal('1198.31'), 12, rotation=6)
xen18-erlich-passion-13 mos(Decimal('98.40'), Decimal('1198.31'), 13, rotation=6)
xen18-erlich-passion-25 mos(Decimal('98.40'), Decimal('1198.31'), 25, rotation=24)
xen18-erlich-passion-37 mos(Decimal('98.40'), Decimal('1198.31'), 37, rotation=17)
xen18-erlich-passion-49 mos(Decimal('98.40'), Decimal('1198.31'), 49, rotation=47)
xen18-erlich-porcupine-02 mos(Decimal('1034.59'), Decimal('1196.91'), 2, rotation=1)
xen18-erlich-porcupine-03 mos(Decimal('1034.59'), Decimal('1196.91'), 3, rotation=2)
xen18-erlich-porcupine-04 mos(Decimal('1034.59'), Decimal('1196.91'), 4, rotation=2)
xen18-erlich-porcupine-05 mos(Decimal('1034.59'), Decimal('1196.91'), 5, rotation=3)
xen18-erlich-porcupine-06 mos(Decimal('1034.59'), Decimal('1196.91'), 6, rotation=3)
xen18-erlich-porcupine-07 mos(Decimal('1034.59'), Decimal('1196.91'), 7, rotation=4)
xen18-erlich-porcupine-08 mos(Decimal('1034.59'), Decimal('1196.91'), 8, rotation=4)
xen18-erlich-porcupine-15 mos(Decimal('1034.59'), Decimal('1196.91'), 15, rotation=1)
xen18-erlich-porcupine-22 mos(Decimal('1034.59'), Decimal('1196.91'), 22, rotation=11)
xen18-erlich-porcupine-37 mos(Decimal('1034.59'), Decimal('1196.91'), 37, rotation=21)
xen18-erlich-ripple-02 mos(Decimal('101.99'), Decimal('1203.32'), 2, rotation=1)
xen18-erlich-ripple-03 mos(Decimal('101.99'), Decimal('1203.32'), 3, rotation=1)
xen18-erlich-ripple-04 mos(Decimal('101.99'), Decimal('1203.32'), 4, rotation=2)
xen18-erlich-ripple-05 mos(Decimal('101.99'), Decimal('1203.32'), 5, rotation=2)
xen18-erlich-ripple-06 mos(Decimal('101.99'), Decimal('1203.32'), 6, rotation=3)
xen18-erlich-ripple-07 mos(Decimal('101.99'), Decimal('1203.32'), 7, rotation=3)
xen18-erlich-ripple-08 mos(Decimal('101.99'), Decimal('1203.32'), 8, rotation=4)
xen18-erlich-ripple-09 mos(Decimal('101.99'), Decimal('1203.32'), 9, rotation=4)
xen18-erlich-ripple-10 mos(Decimal('101.99'), Decimal('1203.32'), 10, rotation=5)
xen18-erlich-ripple-11 mos(Decimal('101.99'), Decimal('1203.32'), 11, rotation=5)
xen18-erlich-ripple-12 mos(Decimal('101.99'), Decimal('1203.32'), 12, rotation=6)
xen18-erlich-ripple-23 mos(Decimal('101.99'), Decimal('1203.32'), 23, rotation=22)
xen18-erlich-ripple-35 mos(Decimal('101.99'), Decimal('1203.32'), 35, rotation=16)
xen18-erlich-semaphore-02 mos(Decimal('252.48'), Decimal('1203.67'), 2, rotation=1)
xen18-erlich-semaphore-03 mos(Decimal('252.48'), Decimal('1203.67'), 3, rotation=1)
xen18-erlich-semaphore-04 mos(Decimal('252.48'), Decimal('1203.67'), 4, rotation=2)
xen18-erlich-semaphore-05 mos(Decimal('252.48'), Decimal('1203.67'), 5, rotation=2)
xen18-erlich-semaphore-09 mos(Decimal('252.48'), Decimal('1203.67'), 9, rotation=8)
xen18-erlich-semaphore-14 mos(Decimal('252.48'), Decimal('1203.67'), 14, rotation=7)
xen18-erlich-semaphore-19 mos(Decimal('252.48'), Decimal('1203.67'), 19, rotation=17)
xen18-erlich-semaphore-24 mos(Decimal('252.48'), Decimal('1203.67'), 24, rotation=12)
xen18-erlich-sensipent-02 mos(Decimal('756.60'), Decimal('1199.59'), 2, rotation=1)
xen18-erlich-sensipent-03 mos(Decimal('756.60'), Decimal('1199.59'), 3, rotation=2)
xen18-erlich-sensipent-05 mos(Decimal('756.60'), Decimal('1199.59'), 5, rotation=1)
xen18-erlich-sensipent-08 mos(Decimal('756.60'), Decimal('1199.59'), 8, rotation=4)
xen18-erlich-sensipent-11 mos(Decimal('756.60'), Decimal('1199.59'), 11, rotation=2)
xen18-erlich-sensipent-19 mos(Decimal('756.60'), Decimal('1199.59'), 19, rotation=13)
xen18-erlich-sensipent-27 mos(Decimal('756.60'), Decimal('1199.59'), 27, rotation=5)
xen18-erlich-sensipent-46 mos(Decimal('756.60'), Decimal('1199.59'), 46, rotation=23)
xen18-erlich-sensisept-02 mos(Decimal('755.23'), Decimal('1198.39'), 2, rotation=1)
xen18-erlich-sensisept-03 mos(Decimal('755.23'), Decimal('1198.39'), 3, rotation=2)
xen18-erlich-sensisept-05 mos(Decimal('755.23'), Decimal('1198.39'), 5, rotation=1)
xen18-erlich-sensisept-08 mos(Decimal('755.23'), Decimal('1198.39'), 8, rotation=4)
xen18-erlich-sensisept-11 mos(Decimal('755.23'), Decimal('1198.39'), 11, rotation=2)
xen18-erlich-sensisept-19 mos(Decimal('755.23'), Decimal('1198.39'), 19, rotation=13)
xen18-erlich-sensisept-27 mos(Decimal('755.23'), Decimal('1198.39'), 27, rotation=5)
xen18-erlich-sensisept-46 mos(Decimal('755.23'), Decimal('1198.39'), 46, rotation=23)
xen18-erlich-srutal-02 mos(Decimal('494.86'), Decimal('599.56'), 1, repeat=2)
xen18-erlich-srutal-04 mos(Decimal('494.86'), Decimal('599.56'), 2, rotation=1, repeat=2)
xen18-erlich-srutal-06 mos(Decimal('494.86'), Decimal('599.56'), 3, rotation=2, repeat=2)
xen18-erlich-srutal-08 mos(Decimal('494.86'), Decimal('599.56'), 4, rotation=2, repeat=2)
xen18-erlich-srutal-10 mos(Decimal('494.86'), Decimal('599.56'), 5, rotation=3, repeat=2)
xen18-erlich-srutal-12 mos(Decimal('494.86'), Decimal('599.56'), 6, rotation=3, repeat=2)
xen18-erlich-srutal-22 mos(Decimal('494.86'), Decimal('599.56'), 11, rotation=1, repeat=2)
xen18-erlich-srutal-34 mos(Decimal('494.86'), Decimal('599.56'), 17, rotation=10, repeat=2)
xen18-erlich-srutal-46 mos(Decimal('494.86'), Decimal('599.56'), 23, rotation=2, repeat=2)
xen18-erlich-superpyth-02 mos(Decimal('708.17'), Decimal('1197.60'), 2, rotation=1)
xen18-erlich-superpyth-03 mos(Decimal('708.17'), Decimal('1197.60'), 3, rotation=2)
xen18-erlich-superpyth-05 mos(Decimal('708.17'), Decimal('1197.60'), 5, rotation=1)
xen18-erlich-superpyth-07 mos(Decimal('708.17'), Decimal('1197.60'), 7, rotation=5)
xen18-erlich-superpyth-12 mos(Decimal('708.17'), Decimal('1197.60'), 12, rotation=6)
xen18-erlich-superpyth-17 mos(Decimal('708.17'), Decimal('1197.60'), 17, rotation=12)
xen18-erlich-superpyth-22 mos(Decimal('708.17'), Decimal('1197.60'), 22, rotation=11)
xen18-erlich-superpyth-27 mos(Decimal('708.17'), Decimal('1197.60'), 27, rotation=19)
xen18-erlich-tetracot-02 mos(Decimal('176.11'), Decimal('1199.03'), 2, rotation=1)
xen18-erlich-tetracot-03 mos(Decimal('176.11'), Decimal('1199.03'), 3, rotation=1)
xen18-erlich-tetracot-04 mos(Decimal('176.11'), Decimal('1199.03'), 4, rotation=2)
xen18-erlich-tetracot-05 mos(Decimal('176.11'), Decimal('1199.03'), 5, rotation=2)
xen18-erlich-tetracot-06 mos(Decimal('176.11'), Decimal('1199.03'), 6, rotation=3)
xen18-erlich-tetracot-07 mos(Decimal('176.11'), Decimal('1199.03'), 7, rotation=3)
xen18-erlich-tetracot-13 mos(Decimal('176.11'), Decimal('1199.03'), 13, rotation=12)
xen18-erlich-tetracot-20 mos(Decimal('176.11'), Decimal('1199.03'), 20, rotation=10)
xen18-erlich-tetracot-27 mos(Decimal('176.11'), Decimal('1199.03'), 27, rotation=25)
xen18-erlich-tetracot-34 mos(Decimal('176.11'), Decimal('1199.03'), 34, rotation=17)
xen18-erlich-tetracot-41 mos(Decimal('176.11'), Decimal('1199.03'), 41, rotation=38)
xen18-erlich-vishnu-02 mos(Decimal('71.15'), Decimal('599.97'), 1, repeat=2)
xen18-erlich-vishnu-04 mos(Decimal('71.15'), Decimal('599.97'), 2, rotation=1, repeat=2)
xen18-erlich-vishnu-06 mos(Decimal('71.15'), Decimal('599.97'), 3, rotation=1, repeat=2)
xen18-erlich-vishnu-08 mos(Decimal('71.15'), Decimal('599.97'), 4, rotation=2, repeat=2)
xen18-erlich-vishnu-10 mos(Decimal('71.15'), Decimal('599.97'), 5, rotation=2, repeat=2)
xen18-erlich-vishnu-12 mos(Decimal('71.15'), Decimal('599.97'), 6, rotation=3, repeat=2)
xen18-erlich-vishnu-14 mos(Decimal('71.15'), Decimal('599.97'), 7, rotation=3, repeat=2)
xen18-erlich-vishnu-16 mos(Decimal('71.15'), Decimal('599.97'), 8, rotation=4, repeat=2)
xen18-erlich-vishnu-18 mos(Decimal('71.15'), Decimal('599.97'), 9, rotation=4, repeat=2)
xen18-erlich-vishnu-34 mos(Decimal('71.15'), Decimal('599.97'), 17, rotation=16, repeat=2)
xen18-erlich-vishnu-50 mos(Decimal('71.15'), Decimal('599.97'), 25, rotation=11, repeat=2)
xen18-erlich-vishnu-84 mos(Decimal('71.15'), Decimal('599.97'), 42, rotation=21, repeat=2)
xen18-erlich-wurschmidt-02 mos(Decimal('812.05'), Decimal('1199.69'), 2, rotation=1)
xen18-erlich-wurschmidt-03 mos(Decimal('812.05'), Decimal('1199.69'), 3, rotation=2)
xen18-erlich-wurschmidt-04 mos(Decimal('812.05'), Decimal('1199.69'), 4, rotation=2)
xen18-erlich-wurschmidt-07 mos(Decimal('812.05'), Decimal('1199.69'), 7, rotation=1)
xen18-erlich-wurschmidt-10 mos(Decimal('812.05'), Decimal('1199.69'), 10, rotation=5)
xen18-erlich-wurschmidt-13 mos(Decimal('812.05'), Decimal('1199.69'), 13, rotation=2)
xen18-erlich-wurschmidt-16 mos(Decimal('812.05'), Decimal('1199.69'), 16, rotation=8)
xen18-erlich-wurschmidt-19 mos(Decimal('812.05'), Decimal('1199.69'), 19, rotation=3)
xen18-erlich-wurschmidt-22 mos(Decimal('812.05'), Decimal('1199.69'), 22, rotation=11)
xen18-erlich-wurschmidt-25 mos(Decimal('812.05'), Decimal('1199.69'), 25, rotation=4)
xen18-erlich-wurschmidt-28 mos(Decimal('812.05'), Decimal('1199.69'), 28, rotation=14)
xen18-erlich-wurschmidt-31 mos(Decimal('812.05'), Decimal('1199.69'), 31, rotation=5)
xen18-erlich-wurschmidt-34 mos(Decimal('812.05'), Decimal('1199.69'), 34, rotation=17)
xen18-erlich-wurschmidt-65 mos(Decimal('812.05'), Decimal('1199.69'), 65, rotation=43)