F: (-1, 0)
G: (1, 0)
a = LineBisector(F, G)
P = Point(a)
c = Ellipse(F, G, P)
Q = Point(c)
b = Line(F, G)
A = Intersect(c, b, 1)
B = Intersect(c, b, 2)
d = Segment(A, B)
C = Intersect(c, a, 2)
e = Segment(P, C)
D = Intersect(d, e)
Q' = Mirror(Q, D)
f = Segment(Q, Q')
g = Tangent(Q, c)
h = Tangent(Q', c)
i = Line(D, g)
E = Intersect(c, i, 2)
H = Intersect(c, i, 1)
j = Tangent(E, c)
k = Tangent(H, c)
I = Intersect(g, j)
J = Intersect(g, k)
K = Intersect(h, k)
L = Intersect(h, j)
l = Segment(I, J)
m = Segment(J, K)
n = Segment(K, L)
p = Segment(L, I)
q = Line(I, e)
r = Line(J, e)
s = Line(K, e)
t = Line(L, e)
c_1 = Circle(L, Segment[F, G])
d_1 = Circle(I, Segment[F, G])
e_1 = Circle(J, Segment[F, G])
f_1 = Circle(K, Segment[F, G])
M = Intersect(c_1, t, 1)
N = Intersect(d_1, q, 1)
O = Intersect(e_1, r, 1)
R = Intersect(f_1, s, 1)
a_1 = Segment(L, M)
b_1 = Segment(I, N)
g_1 = Segment(J, O)
h_1 = Segment(K, R)
i_1 = Segment(M, R)
j_1 = Segment(R, O)
k_1 = Segment(O, N)
l_1 = Segment(N, M)
m_1 = Segment(E, H)