Implement offline rendering, default to pre-render

This commit is contained in:
Bradlee Speice 2023-07-22 03:26:54 +00:00
parent 04d5099338
commit 342e4ee6cf
33 changed files with 943 additions and 860 deletions

View File

@ -1,57 +1,105 @@
import React, { useEffect, useRef } from "react"; import React, { useEffect, useRef, useState } from "react";
import { Renderer } from "./0-utility"; import { DEFAULT_SIZE, RenderParams, Renderer } from "./0-utility.js";
import { paramsGasket } from "./1-gasket.js";
import { paramsBaseline } from "./2a-baseline.js";
import { paramsPost } from "./2b-post.js";
import { paramsFinal } from "./2c-final.js";
import { paramsBinary } from "./3a-binary.js";
import { paramsLinear } from "./3b-linear.js";
import { paramsLogarithmic } from "./3c-logarithmic.js";
import { paramsColor } from "./4-color.js";
import { paramsGasketFlame } from "./5a-gasket.js";
import { paramsSolo1, paramsSolo2, paramsSolo3 } from "./5b-solo.js";
export type CanvasParams = { import urlGasket from "./images/1-gasket.png";
defaultUrl: string; import urlBaseline from "./images/2a-baseline.png";
size: number; import urlPost from "./images/2b-post.png";
qualityMax: number; import urlFinal from "./images/2c-final.png";
qualityStep: number; import urlBinary from "./images/3a-binary.png";
renderer: (size: number) => Renderer; import urlLinear from "./images/3b-linear.png";
}; import urlLogarithmic from "./images/3c-logarithmic.png";
import urlColor from "./images/4-color.png";
import urlGasketFlame from "./images/5a-gasket.png";
import urlSolo1 from "./images/5b-solo1.png";
import urlSolo2 from "./images/5b-solo2.png";
import urlSolo3 from "./images/5b-solo3.png";
export const CanvasRenderer: React.FC<{ params: CanvasParams }> = ({ export const DEFAULT_STEP: number = 0.1;
params,
}) => { export type CanvasParams = RenderParams & { url: string };
export const CanvasRenderer: React.FC<CanvasParams> = (params) => {
const canvasRef = useRef<HTMLCanvasElement | null>(null); const canvasRef = useRef<HTMLCanvasElement | null>(null);
const [useUrl, setUseUrl] = useState(true);
var qualityCurrent: number = 0; var qualityCurrent: number = 0;
var rendererCurrent: Renderer = params.renderer(params.size); var rendererCurrent: Renderer = params.renderer(DEFAULT_SIZE);
const animate = () => { const animate = () => {
const ctx = canvasRef.current?.getContext("2d"); const ctx = canvasRef.current?.getContext("2d");
if (!ctx) { if (!ctx) {
console.log("Ref not ready");
requestAnimationFrame(animate);
return; return;
} }
const image = ctx.createImageData(params.size, params.size); const image = ctx.createImageData(DEFAULT_SIZE, DEFAULT_SIZE);
rendererCurrent.run(params.qualityStep); rendererCurrent.run(DEFAULT_STEP);
rendererCurrent.render(image); rendererCurrent.render(image);
ctx.putImageData(image, 0, 0); ctx.putImageData(image, 0, 0);
if (qualityCurrent < params.qualityMax) { if (qualityCurrent < params.quality) {
qualityCurrent += params.qualityStep; qualityCurrent += DEFAULT_STEP;
requestAnimationFrame(animate); requestAnimationFrame(animate);
} }
}; };
const useCanvas = () => {
setUseUrl(false);
requestAnimationFrame(animate);
};
const reset = () => { const reset = () => {
qualityCurrent = 0; qualityCurrent = 0;
rendererCurrent = params.renderer(params.size); rendererCurrent = params.renderer(DEFAULT_SIZE);
requestAnimationFrame(animate); requestAnimationFrame(animate);
}; };
useEffect(() => {
if (canvasRef.current) {
requestAnimationFrame(animate);
}
}, []);
return ( return (
<>
<img src={params.url} onClick={useCanvas} hidden={!useUrl} />
<canvas <canvas
ref={canvasRef} ref={canvasRef}
width={params.size} width={DEFAULT_SIZE}
height={params.size} height={DEFAULT_SIZE}
onClick={reset} onClick={reset}
hidden={useUrl}
/> />
</>
); );
}; };
export const CanvasGasket: React.FC<{}> = () =>
CanvasRenderer({ url: urlGasket, ...paramsGasket });
export const CanvasBaseline: React.FC<{}> = () =>
CanvasRenderer({ url: urlBaseline, ...paramsBaseline });
export const CanvasPost: React.FC<{}> = () =>
CanvasRenderer({ url: urlPost, ...paramsPost });
export const CanvasFinal: React.FC<{}> = () =>
CanvasRenderer({ url: urlFinal, ...paramsFinal });
export const CanvasBinary: React.FC<{}> = () =>
CanvasRenderer({ url: urlBinary, ...paramsBinary });
export const CanvasLinear: React.FC<{}> = () =>
CanvasRenderer({ url: urlLinear, ...paramsLinear });
export const CanvasLogarithmic: React.FC<{}> = () =>
CanvasRenderer({ url: urlLogarithmic, ...paramsLogarithmic });
export const CanvasColor: React.FC<{}> = () =>
CanvasRenderer({ url: urlColor, ...paramsColor });
export const CanvasGasketFlame: React.FC<{}> = () =>
CanvasRenderer({ url: urlGasketFlame, ...paramsGasketFlame });
export const CanvasSolo1: React.FC<{}> = () =>
CanvasRenderer({ url: urlSolo1, ...paramsSolo1 });
export const CanvasSolo2: React.FC<{}> = () =>
CanvasRenderer({ url: urlSolo2, ...paramsSolo2 });
export const CanvasSolo3: React.FC<{}> = () =>
CanvasRenderer({ url: urlSolo3, ...paramsSolo3 });

View File

@ -1,3 +1,5 @@
export const DEFAULT_SIZE: number = 400;
/** /**
* Image render manager * Image render manager
* *
@ -28,7 +30,10 @@ export abstract class Renderer {
abstract render(image: ImageData): void; abstract render(image: ImageData): void;
} }
export type renderFn = (image: ImageData) => void; export type RenderParams = {
quality: number;
renderer: (size: number) => Renderer;
};
/** /**
* @returns random number in the bi-unit square (-1, 1) * @returns random number in the bi-unit square (-1, 1)

View File

@ -1,11 +1,11 @@
import { CanvasParams } from "./0-canvas";
import { import {
randomBiUnit, randomBiUnit,
randomInteger, randomInteger,
imageIndex, imageIndex,
Renderer, Renderer,
histIndex, histIndex,
} from "./0-utility"; RenderParams,
} from "./0-utility.js";
type Transform = (x: number, y: number) => [number, number]; type Transform = (x: number, y: number) => [number, number];
@ -89,6 +89,7 @@ export class RendererGasket extends Renderer {
} }
} }
export function buildGasket(size: number) { export const paramsGasket: RenderParams = {
return new RendererGasket(size); quality: 1,
} renderer: (size) => new RendererGasket(size),
};

View File

@ -1,10 +1,11 @@
import { import {
RenderParams,
Renderer, Renderer,
histIndex, histIndex,
imageIndex, imageIndex,
randomBiUnit, randomBiUnit,
weightedChoice, weightedChoice,
} from "./0-utility"; } from "./0-utility.js";
export type Variation = ( export type Variation = (
x: number, x: number,
@ -216,6 +217,7 @@ export const transformAll: [number, Transform][] = [
[transform3Weight, transform3], [transform3Weight, transform3],
]; ];
export function buildBaseline(size: number) { export const paramsBaseline: RenderParams = {
return new RendererFlame(size, transformAll); quality: 1,
} renderer: (size) => new RendererFlame(size, transformAll),
};

View File

@ -1,4 +1,4 @@
import { randomBiUnit, weightedChoice } from "./0-utility"; import { RenderParams } from "./0-utility.js";
import { import {
Coefs, Coefs,
Variation, Variation,
@ -11,7 +11,7 @@ import {
transform3, transform3,
identityCoefs, identityCoefs,
RendererFlame, RendererFlame,
} from "./2a-variations"; } from "./2a-baseline.js";
export class TransformPost extends Transform { export class TransformPost extends Transform {
constructor( constructor(
@ -62,6 +62,7 @@ export const transformAllPost: [number, TransformPost][] = [
[transform3Weight, transform3Post], [transform3Weight, transform3Post],
]; ];
export function buildPost(size: number) { export const paramsPost: RenderParams = {
return new RendererFlame(size, transformAllPost); quality: 1,
} renderer: (size) => new RendererFlame(size, transformAllPost),
};

View File

@ -1,18 +1,6 @@
import { julia, identityCoefs, RendererFlame } from "./2a-variations"; import { RenderParams } from "./0-utility.js";
import { TransformPost, transformAllPost } from "./2b-post"; import { julia, identityCoefs, RendererFlame } from "./2a-baseline.js";
import { TransformPost, transformAllPost } from "./2b-post.js";
export const transformFinal = new TransformPost(
{
a: 2,
b: 0,
c: 0,
d: 0,
e: 2,
f: 0,
},
[[1, julia]],
identityCoefs
);
export class RendererFinal extends RendererFlame { export class RendererFinal extends RendererFlame {
constructor( constructor(
@ -28,6 +16,20 @@ export class RendererFinal extends RendererFlame {
} }
} }
export function buildFinal(size: number) { export const transformFinal = new TransformPost(
return new RendererFinal(size, transformAllPost, transformFinal); {
} a: 2,
b: 0,
c: 0,
d: 0,
e: 2,
f: 0,
},
[[1, julia]],
identityCoefs
);
export const paramsFinal: RenderParams = {
quality: 1,
renderer: (size) => new RendererFinal(size, transformAllPost, transformFinal),
};

View File

@ -1,17 +1,18 @@
import { histIndex, imageIndex } from "./0-utility"; import { RenderParams, histIndex, imageIndex } from "./0-utility.js";
import { import {
camera, camera,
transform1Weight, transform1Weight,
transform2Weight, transform2Weight,
transform3Weight, transform3Weight,
} from "./2a-variations"; } from "./2a-baseline.js";
import { import {
TransformPost, TransformPost,
transform1Post, transform1Post,
transform2Post, transform2Post,
transform3Post, transform3Post,
} from "./2b-post"; transformAllPost,
import { RendererFinal, transformFinal } from "./2c-final"; } from "./2b-post.js";
import { RendererFinal, transformFinal } from "./2c-final.js";
export class RendererHistogram extends RendererFinal { export class RendererHistogram extends RendererFinal {
protected histogram: number[] = []; protected histogram: number[] = [];
@ -59,14 +60,8 @@ export class RendererHistogram extends RendererFinal {
} }
} }
export function buildBinary(size: number) { export const paramsBinary: RenderParams = {
return new RendererHistogram( quality: 1,
size, renderer: (size) =>
[ new RendererHistogram(size, transformAllPost, transformFinal),
[transform1Weight, transform1Post], };
[transform2Weight, transform2Post],
[transform3Weight, transform3Post],
],
transformFinal
);
}

View File

@ -1,11 +1,14 @@
import { histIndex, imageIndex } from "./0-utility"; import { RenderParams, histIndex, imageIndex } from "./0-utility.js";
import { transformAllPost } from "./2b-post"; import { transformAllPost } from "./2b-post.js";
import { transformFinal } from "./2c-final"; import { transformFinal } from "./2c-final.js";
import { RendererHistogram } from "./3a-binary"; import { RendererHistogram } from "./3a-binary.js";
class RendererLinear extends RendererHistogram { class RendererLinear extends RendererHistogram {
render(image: ImageData): void { render(image: ImageData): void {
const maxHistogram = Math.max(...this.histogram); const maxHistogram = this.histogram.reduce(
(max, v) => Math.max(max, v),
-Infinity
);
for (var x = 0; x < this.size; x++) { for (var x = 0; x < this.size; x++) {
for (var y = 0; y < this.size; y++) { for (var y = 0; y < this.size; y++) {
@ -20,6 +23,8 @@ class RendererLinear extends RendererHistogram {
} }
} }
export function buildLinear(size: number) { export const paramsLinear: RenderParams = {
return new RendererLinear(size, transformAllPost, transformFinal); quality: 10,
} renderer: (size) =>
new RendererLinear(size, transformAllPost, transformFinal),
};

View File

@ -1,13 +1,16 @@
import { histIndex, imageIndex } from "./0-utility"; import { RenderParams, histIndex, imageIndex } from "./0-utility.js";
import { transformAllPost } from "./2b-post"; import { transformAllPost } from "./2b-post.js";
import { transformFinal } from "./2c-final"; import { transformFinal } from "./2c-final.js";
import { RendererHistogram } from "./3a-binary"; import { RendererHistogram } from "./3a-binary.js";
export class RendererLogarithmic extends RendererHistogram { export class RendererLogarithmic extends RendererHistogram {
render(image: ImageData): void { render(image: ImageData): void {
// Because log(0) is -Infinity, all the math actually works out. // Because log(0) is -Infinity, all the math actually works out.
const histogramLog = this.histogram.map(Math.log); const histogramLog = this.histogram.map(Math.log);
const histogramLogMax = Math.max(...histogramLog); const histogramLogMax = histogramLog.reduce(
(max, v) => Math.max(max, v),
-Infinity
);
for (var x = 0; x < this.size; x++) { for (var x = 0; x < this.size; x++) {
for (var y = 0; y < this.size; y++) { for (var y = 0; y < this.size; y++) {
@ -23,6 +26,8 @@ export class RendererLogarithmic extends RendererHistogram {
} }
} }
export function buildLogarithmic(size: number) { export const paramsLogarithmic: RenderParams = {
return new RendererLogarithmic(size, transformAllPost, transformFinal); quality: 10,
} renderer: (size) =>
new RendererLogarithmic(size, transformAllPost, transformFinal),
};

View File

@ -1,4 +1,9 @@
import { histIndex, imageIndex, weightedChoice } from "./0-utility"; import {
RenderParams,
histIndex,
imageIndex,
weightedChoice,
} from "./0-utility.js";
import { import {
Coefs, Coefs,
Variation, Variation,
@ -6,14 +11,14 @@ import {
transform1Weight, transform1Weight,
transform2Weight, transform2Weight,
transform3Weight, transform3Weight,
} from "./2a-variations"; } from "./2a-baseline.js";
import { import {
TransformPost, TransformPost,
transform1Post, transform1Post,
transform2Post, transform2Post,
transform3Post, transform3Post,
} from "./2b-post"; } from "./2b-post.js";
import { RendererFinal, transformFinal } from "./2c-final"; import { RendererFinal, transformFinal } from "./2c-final.js";
export class TransformColor extends TransformPost { export class TransformColor extends TransformPost {
constructor( constructor(
@ -171,8 +176,10 @@ export const paletteBytes = hexToBytes(paletteHex);
*/ */
export const paletteNumber = paletteBytes.map((b) => b / 0xff); export const paletteNumber = paletteBytes.map((b) => b / 0xff);
export function buildColor(size: number) { export const paramsColor: RenderParams = {
return new RendererColor( quality: 30,
renderer: (size) =>
new RendererColor(
size, size,
[ [
[transform1Weight, transform1Color], [transform1Weight, transform1Color],
@ -181,5 +188,5 @@ export function buildColor(size: number) {
], ],
transformFinalColor, transformFinalColor,
paletteNumber paletteNumber
); ),
} };

View File

@ -1,5 +1,5 @@
import { RendererFlame, Transform, linear } from "./2a-variations"; import { RenderParams } from "./0-utility.js";
import { RendererLogarithmic } from "./3c-logarithmic"; import { RendererFlame, Transform, linear } from "./2a-baseline.js";
export const transformGasket1 = new Transform( export const transformGasket1 = new Transform(
{ {
@ -43,6 +43,7 @@ export const transformGasket: [number, Transform][] = [
[1 / 3, transformGasket3], [1 / 3, transformGasket3],
]; ];
export function buildGasketFlame(size: number) { export const paramsGasketFlame: RenderParams = {
return new RendererFlame(size, transformGasket); quality: 1,
} renderer: (size) => new RendererFlame(size, transformGasket),
};

View File

@ -1,7 +1,7 @@
import { weightedChoice } from "./0-utility"; import { RenderParams, weightedChoice } from "./0-utility.js";
import { TransformPost, transformAllPost } from "./2b-post"; import { TransformPost, transformAllPost } from "./2b-post.js";
import { transformFinal } from "./2c-final"; import { transformFinal } from "./2c-final.js";
import { RendererLogarithmic } from "./3c-logarithmic"; import { RendererLogarithmic } from "./3c-logarithmic.js";
export class RendererSolo extends RendererLogarithmic { export class RendererSolo extends RendererLogarithmic {
constructor( constructor(
@ -27,14 +27,20 @@ export class RendererSolo extends RendererLogarithmic {
} }
} }
export function buildSolo1(size: number) { export const paramsSolo1: RenderParams = {
return new RendererSolo(size, transformAllPost, transformFinal, 0); quality: 10,
} renderer: (size) =>
new RendererSolo(size, transformAllPost, transformFinal, 0),
};
export function buildSolo2(size: number) { export const paramsSolo2: RenderParams = {
return new RendererSolo(size, transformAllPost, transformFinal, 1); quality: 10,
} renderer: (size) =>
new RendererSolo(size, transformAllPost, transformFinal, 1),
};
export function buildSolo3(size: number) { export const paramsSolo3: RenderParams = {
return new RendererSolo(size, transformAllPost, transformFinal, 2); quality: 10,
} renderer: (size) =>
new RendererSolo(size, transformAllPost, transformFinal, 2),
};

View File

@ -1,230 +0,0 @@
<Flames name="baseline">
<flame name="dependent" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="baseline" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="variations" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="variations" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="variations" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="variations" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
</Flames>

View File

@ -1,230 +0,0 @@
<Flames name="baseline">
<flame name="dependent" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="baseline" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="parametric" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="variations" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="variations" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
<flame name="variations" version="Apophysis 2.08 beta" size="555 428" center="0 0" scale="138.75" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" disc="-0.934" coefs="0.982996 0 0 0.982996 -0.219512 -0.1875" />
<xform weight="0.5" color="0" swirl="0.156" polar="0.778" coefs="0.966511 0.256624 -0.256624 0.966511 0.050305 -0.235518" />
<palette count="256" format="RGB">
7886955967864652763240672432611E2D5D192757172255
11224F0D1D410F1A39101E350F202C0F1F23101B1E0C161C
08151A060E14040A12040D13050D12060C11050D12050D11
050B0F05080F05080D04080C04080E050912040A18030C25
0410350616450A1E560F2362122768172B63192B5D162959
13234F1020420B1E3C0B1B380D19300E1A280D18200C191E
0D1C200F1C1E0D1A1D0A171E0B171C0B1119070A15040611
03050E01050C00060C01060C03090D061213081516071012
0813160B1420081022060C24050926040728020528010429
00042F060B3B0C124717255A22396D3B4E815564955D6F9B
667AA28593AC7A8799707B875F6A784F59694751643F4A60
2633602534622536651D3162162D60162B5D16295B15275E
182B6324386D3F517F5A6B927686A992A1C1A5B1CAB8C2D4
E4EAF3EEF3F8F9FCFDFBFCFDFEFCFDFEFCFDFEFDFDFCFDFF
F5F7FBE1E6EED2D6E2C3C7D6B9BFD5AFB8D5B2B8D3B6B9D2
CCD1E6DADEEAE8EBEEE3EAEFDFEAF1D8E3EBD1DDE6BACAD8
9DB0D28199BF7790B56E87AC6C84A66B82A05C72934A5B7B
2935531F2D451626381525351524321625341727371A2B44
2536563B4D8955689E6F84B37A90BF869DCCA3B6D7B9C6DF
CAD6E7C5CDDDC0C4D3BCC1CDB9BFC7B1B6C0ACB3BFB2BBC1
BCC2C6D8DEE1E2E7EBECF0F5EDF1F6EFF3F8E9EFF7DDE3EF
BAC0D8ABB1D19CA3CA98A1CA949FCB8E9BD097A2D5A9B3E2
BBC6EADFE4F4E3EAF7E8F1FBE8F3FADEE9EECAD8E4B3C3D9
8D9AAB808DA474809E737D9A737B977178925F6D9A4E5E95
4552841B2D611524540F1C47091236080F2A080D22070C20
11162D151E3A1A26482332532C3E5E42567557688B71839F
8C9AB0BDC6C9BEC7C9C0C9CAC9C9C6C7CAC4B4BFB9A9AEA9
9499A09198A08E97A1929C9D939FA08F9CA5899397767F82
586873343A51272F491B2542141B360E142C0A0F250B0D20
0B12270E152E1119351721461D2A5622316127387126397C
22367C253581222F7E1D2C7722317E333B824A5289636FA2
ACB3D0BAC1DAC8D0E4D5E1E7D8E3E2D0DBDBB7C8C69AA8AC
</palette>
</flame>
</Flames>

View File

@ -1,41 +0,0 @@
<Flames name="gasket">
<flame name="Apophysis-230716-1" version="Apophysis 2.08 beta" size="800 800" center="0 0" scale="200" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.5" color="0" linear="1" coefs="0.5 0 0 0.5 0 0" />
<xform weight="0.5" color="0" linear="1" coefs="0.5 0.5 0 0 0 -0.5" />
<xform weight="0.5" color="0" linear="1" coefs="0 0.5 0.5 0 0.5 -0.5" />
<palette count="256" format="RGB">
B48AA0AA688CAB5689AD44869E4B859052848A5782855C80
695D6D50596437555B27565218584A17584417583F1B5540
2052413B464A4C3F485D3947722D4A88224D941C50A11754
C70D5ECD0A60D40762D30869D20A70CF0D73CC1076C61478
B917739F1D67941F638A225F7C255E6F295D692B5A632E58
4D3D4E49435146495451555D5D626764676B6B6C6F7C7B7B
8C858BB8A0A1BBA2A4BEA5A8B69EA7AE97A6AC92A5AB8DA5
98668E855880734A73673A6E5C2B695826685521684F2463
442B58253B431D3D41163F40163E3E163E3D123D39123E37
123A3F1135471030500E2F540D2F580C32590B355B0B3C5B
0A455B0B56570B60590B6A5C0C6F5E0D75600F7D6012825D
187F531B7C521F795221764F24744D276C432C64372C5E2E
2C5A2A2F5C2F306434326D3932753A337D3C34874436944F
3D8D60408561447E63487C644D7A665C6C636B5664763D61
83275F9A145BA01259A61058AE0C54B1094FAE0B49A01144
891C3D851C39821D357F1E337D1F3177222F7922317E2234
8A1F39991B419A1C419B1D429A28419B374390454C805051
62535764545267564E66564B6556495B4F464E4A454C4444
4E423E4A4735464C354251353658392E6138296735286935
2D633A2D5F3B2D5B3D2E523C2D4A3C28413D273B3F223446
1D324817314E18304F193051222F5A2F2F603D3064473168
553172582F755C2E79612D7C652E7C64347261426C5A4D65
51555F4C565C4A525152544958513F59523B554E3C4B473E
4A3842493642493543483342443641453C3E4A433A504438
5742385D3E3D6A383D75383D7E373F8136447A3B4E723E53
6A47565E515954575B4A66643F74683A8269378A6C3E836A
4F786B5E6C6A67616469585B6D4E517444467C3E3D793B36
6C3E2F5A432F4A4A2D4354313D573A3E58413F564F3F5057
3F515C3E4C603F465F424165443B693F3D6A393F6A304264
2A455F26475B1F48591D4958194A571A4C56194E53145052
15555418585822605F366B65477A755F908879A19A8DB2AC
AABFB6C0CCC4C9D6CDC8DDCDC4CBCBC1B4BCC4A0B2C184AB
</palette>
</flame>
</Flames>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -1,16 +1,5 @@
import { build } from "vite";
import Blog from "../../../LayoutBlog"; import Blog from "../../../LayoutBlog";
import { CanvasColor } from "./0-canvas.js";
import { CanvasRenderer } from "./0-canvas";
import { buildBaseline } from "./2a-variations";
import { buildPost } from "./2b-post";
import { buildFinal } from "./2c-final";
import { buildBinary } from "./3a-binary";
import { buildColor } from "./4-color";
import { buildLinear } from "./3b-linear";
import { buildLogarithmic } from "./3c-logarithmic";
import { buildSolo1, buildSolo2, buildSolo3 } from "./5b-solo";
import { buildGasketFlame } from "./5a-gasket";
export default function () { export default function () {
const Layout = Blog({ const Layout = Blog({
@ -20,105 +9,7 @@ export default function () {
}); });
return ( return (
<Layout> <Layout>
{/* <CanvasRenderer <CanvasColor />
params={{
defaultUrl: "",
size: 400,
renderer: new RendererGasket(400),
qualityMax: 0.3,
qualityStep: 0.1,
}}
/> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildBaseline(size),
qualityMax: 1,
qualityStep: 0.1,
}}
/> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildPost(size),
qualityMax: 1,
qualityStep: 0.1
}} /> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildFinal(size),
qualityMax: 1,
qualityStep: 0.1,
}} /> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildBinary(size),
qualityMax: 1,
qualityStep: 0.1,
}} /> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildLinear(size),
qualityMax: 5,
qualityStep: 0.1,
}} /> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildLogarithmic(size),
qualityMax: 5,
qualityStep: 0.1,
}} /> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildColor(size),
qualityMax: 50,
qualityStep: 0.1,
}} /> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildSolo1(size),
qualityMax: 5,
qualityStep: 0.1,
}} /> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildSolo2(size),
qualityMax: 5,
qualityStep: 0.1,
}} /> */}
{/* <CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildSolo3(size),
qualityMax: 5,
qualityStep: 0.1,
}} /> */}
<CanvasRenderer
params={{
defaultUrl: "",
size: 400,
renderer: (size) => buildGasketFlame(size),
qualityMax: 0.3,
qualityStep: 0.1,
}}
/>
</Layout> </Layout>
); );
} }

View File

@ -0,0 +1,45 @@
import * as fs from "fs/promises";
import { createCanvas } from "canvas";
import { DEFAULT_SIZE, RenderParams } from "./0-utility.js";
import { paramsGasket } from "./1-gasket.js";
import { paramsBaseline } from "./2a-baseline.js";
import { paramsPost } from "./2b-post.js";
import { paramsFinal } from "./2c-final.js";
import { paramsBinary } from "./3a-binary.js";
import { paramsLinear } from "./3b-linear.js";
import { paramsLogarithmic } from "./3c-logarithmic.js";
import { paramsColor } from "./4-color.js";
import { paramsGasketFlame } from "./5a-gasket.js";
import { paramsSolo1, paramsSolo2, paramsSolo3 } from "./5b-solo.js";
export type OfflineParams = RenderParams & { filename: string };
const paramsAll: OfflineParams[] = [
{ filename: "images/1-gasket.png", ...paramsGasket },
{ filename: "images/2a-baseline.png", ...paramsBaseline },
{ filename: "images/2b-post.png", ...paramsPost },
{ filename: "images/2c-final.png", ...paramsFinal },
{ filename: "images/3a-binary.png", ...paramsBinary },
{ filename: "images/3b-linear.png", ...paramsLinear },
{ filename: "images/3c-logarithmic.png", ...paramsLogarithmic },
{ filename: "images/4-color.png", ...paramsColor },
{ filename: "images/5a-gasket.png", ...paramsGasketFlame },
{ filename: "images/5b-solo1.png", ...paramsSolo1 },
{ filename: "images/5b-solo2.png", ...paramsSolo2 },
{ filename: "images/5b-solo3.png", ...paramsSolo3 },
];
for (const param of paramsAll) {
const render = param.renderer(DEFAULT_SIZE);
render.run(param.quality);
const canvas = createCanvas(DEFAULT_SIZE, DEFAULT_SIZE);
const ctx = canvas.getContext("2d");
const data = ctx.createImageData(DEFAULT_SIZE, DEFAULT_SIZE);
render.render(data as any);
ctx.putImageData(data, 0, 0);
const buffer = canvas.toBuffer();
await fs.writeFile(param.filename, buffer);
}

659
posts/2023/06/flam3/package-lock.json generated Normal file
View File

@ -0,0 +1,659 @@
{
"name": "blog-flam3",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "blog-flam3",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"canvas": "^2.11.2"
},
"devDependencies": {
"typescript": "^5.1.6"
}
},
"node_modules/@mapbox/node-pre-gyp": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
"integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
"dependencies": {
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
"make-dir": "^3.1.0",
"node-fetch": "^2.6.7",
"nopt": "^5.0.0",
"npmlog": "^5.0.1",
"rimraf": "^3.0.2",
"semver": "^7.3.5",
"tar": "^6.1.11"
},
"bin": {
"node-pre-gyp": "bin/node-pre-gyp"
}
},
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dependencies": {
"debug": "4"
},
"engines": {
"node": ">= 6.0.0"
}
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/aproba": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
"integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
},
"node_modules/are-we-there-yet": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/canvas": {
"version": "2.11.2",
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz",
"integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==",
"hasInstallScript": true,
"dependencies": {
"@mapbox/node-pre-gyp": "^1.0.0",
"nan": "^2.17.0",
"simple-get": "^3.0.3"
},
"engines": {
"node": ">=6"
}
},
"node_modules/chownr": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"engines": {
"node": ">=10"
}
},
"node_modules/color-support": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
"bin": {
"color-support": "bin.js"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/decompress-response": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
"integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
"dependencies": {
"mimic-response": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
},
"node_modules/detect-libc": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
"integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
"engines": {
"node": ">=8"
}
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/fs-minipass": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
"dependencies": {
"minipass": "^3.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/fs-minipass/node_modules/minipass": {
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"node_modules/gauge": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.1",
"object-assign": "^4.1.1",
"signal-exit": "^3.0.0",
"string-width": "^4.2.3",
"strip-ansi": "^6.0.1",
"wide-align": "^1.1.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
},
"node_modules/https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"dependencies": {
"agent-base": "6",
"debug": "4"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"engines": {
"node": ">=8"
}
},
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dependencies": {
"semver": "^6.0.0"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/make-dir/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/mimic-response": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
"integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/minizlib": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/minizlib/node_modules/minipass": {
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"bin": {
"mkdirp": "bin/cmd.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/nan": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
},
"node_modules/node-fetch": {
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
"integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/nopt": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
"dependencies": {
"abbrev": "1"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
"node": ">=6"
}
},
"node_modules/npmlog": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
"dependencies": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
"gauge": "^3.0.0",
"set-blocking": "^2.0.0"
}
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dependencies": {
"glob": "^7.1.3"
},
"bin": {
"rimraf": "bin.js"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
"node_modules/simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/simple-get": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
"integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
"dependencies": {
"decompress-response": "^4.2.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dependencies": {
"safe-buffer": "~5.2.0"
}
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/tar": {
"version": "6.1.15",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
"integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
"minipass": "^5.0.0",
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"node_modules/typescript": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
"integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
"integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
"dependencies": {
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
}

View File

@ -0,0 +1,17 @@
{
"name": "blog-flam3",
"version": "1.0.0",
"description": "",
"type": "module",
"scripts": {
"render": "tsc && node ./dist/offline.js"
},
"author": "",
"license": "MIT",
"dependencies": {
"canvas": "^2.11.2"
},
"devDependencies": {
"typescript": "^5.1.6"
}
}

View File

@ -0,0 +1,14 @@
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"lib": ["DOM", "ES2021"],
"moduleResolution": "node",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"outDir": "./dist"
},
"exclude": ["*.tsx"]
}

View File

@ -1,120 +0,0 @@
<Flames name="variations">
<flame name="post xform" version="Apophysis 2.08 beta" size="600 600" center="0 0" scale="150" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.422330042096567" color="0" pdj="1" coefs="1.51523 0.740356 -3.048677 -1.455964 0.724135 -0.362059" pdj_a="1.09358" pdj_b="2.13048" pdj_c="2.54127" pdj_d="2.37267" />
<xform weight="0.564534951145298" color="0" julia="1" coefs="-1.381068 1.381068 -1.381068 -1.381068 0 0" />
<xform weight="0.0131350067581356" color="0" linear="1" popcorn="1" coefs="0.031393 -0.031367 0.031367 0.031393 0 0" post="1 0 0 1 0.241352 0.271521" />
<palette count="256" format="RGB">
3A78875998AA5E9DAC78B1C2599BAB36798A2252601B3438
1823270D1215080705010101000000000002080A090A0809
0C070D0B090A030406010101000000000000000000000000
0A00000B0A080E1213101B1F21202830243A6737357A3C31
864424643A22452F1838251427190E1C12080E0F110E1213
1014152110183720105D320FA0531F9144180409080A1312
0C13140E13160E15160E17160F16171015180B161C0A1225
0A0F2F101E37172E40294C5A3B6B7549798758879975A9BE
79A7BF7EA6C0949FA2AA9985B7A27BC4AB72AC965A867654
61574E4C4D48374343474141573F3F7C5C36B0914EC1DFF9
C4E4FAC8E9FCBEE1F4B5DAEDB2D8EDB0D6ED5398A7386D78
1D424A1B3B4219343B1B383E1D3C411D3B462155623D7C8B
46747F4F6C74636454785C3584663E917047BEA467CEA86A
DEAC6DC5975EAC834F916E41765A335F3D21431F21241625
1F202B1A2B321A2D321B30331B323A1628360E1D220E1D21
0F1D20101C1F111C1E111D1E121E1E2B21153B2B1B725432
85542C9854279B63369F7346AD7C3AB2763AB18F4FB39453
B69957B99B56BC9E56C19651CB9346AB6A2A9851254E341D
2F261B10181A0E15160C12120D11120A10100D0D0D0C0E0E
0B0F100B10120C11140F191A101F221829331A373B1E3D52
1A40551744591D556420424C1E3B431D3C41112C33102328
101B1D10191E111820101D2311242A1B33371B3A3F276476
3E637D556284545F7D7759355C41261B30290E16180B0F0F
0908060405030002010A0E0F12171A1C1B2B17343C3C7481
467F8F508A9E528FA23E81923769722E69772248512B545E
35616C688589807F85939FB5ABD6E6B3D6EA89B7CE5891A4
467E92356C81194A6B1A373F132C310E1C1F050409020205
0000020000000101010800000B0000170A000D0D0D0D1110
0F0E14100F141F11082619082F1904210F05111717101919
0F1B1B101F22182C2B252E2B282D311B2E321A2E2F162E30
1325270E191B0F1314190D0F2E1211461A27552227612723
6C303A56213D3033381C343619343B15383E193A431A4E5C
</palette>
</flame>
<flame name="final xform" version="Apophysis 2.08 beta" size="600 600" center="0 0" scale="150" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.422330042096567" color="0" pdj="1" coefs="1.51523 0.740356 -3.048677 -1.455964 0.724135 -0.362059" pdj_a="1.09358" pdj_b="2.13048" pdj_c="2.54127" pdj_d="2.37267" />
<xform weight="0.564534951145298" color="0" julia="1" coefs="-1.381068 1.381068 -1.381068 -1.381068 0 0" />
<xform weight="0.0131350067581356" color="0" linear="1" popcorn="1" coefs="0.031393 -0.031367 0.031367 0.031393 0 0" post="1 0 0 1 0.241352 0.271521" />
<finalxform color="0" symmetry="1" julia="1" coefs="2 0 0 2 0 0" />
<palette count="256" format="RGB">
3A78875998AA5E9DAC78B1C2599BAB36798A2252601B3438
1823270D1215080705010101000000000002080A090A0809
0C070D0B090A030406010101000000000000000000000000
0A00000B0A080E1213101B1F21202830243A6737357A3C31
864424643A22452F1838251427190E1C12080E0F110E1213
1014152110183720105D320FA0531F9144180409080A1312
0C13140E13160E15160E17160F16171015180B161C0A1225
0A0F2F101E37172E40294C5A3B6B7549798758879975A9BE
79A7BF7EA6C0949FA2AA9985B7A27BC4AB72AC965A867654
61574E4C4D48374343474141573F3F7C5C36B0914EC1DFF9
C4E4FAC8E9FCBEE1F4B5DAEDB2D8EDB0D6ED5398A7386D78
1D424A1B3B4219343B1B383E1D3C411D3B462155623D7C8B
46747F4F6C74636454785C3584663E917047BEA467CEA86A
DEAC6DC5975EAC834F916E41765A335F3D21431F21241625
1F202B1A2B321A2D321B30331B323A1628360E1D220E1D21
0F1D20101C1F111C1E111D1E121E1E2B21153B2B1B725432
85542C9854279B63369F7346AD7C3AB2763AB18F4FB39453
B69957B99B56BC9E56C19651CB9346AB6A2A9851254E341D
2F261B10181A0E15160C12120D11120A10100D0D0D0C0E0E
0B0F100B10120C11140F191A101F221829331A373B1E3D52
1A40551744591D556420424C1E3B431D3C41112C33102328
101B1D10191E111820101D2311242A1B33371B3A3F276476
3E637D556284545F7D7759355C41261B30290E16180B0F0F
0908060405030002010A0E0F12171A1C1B2B17343C3C7481
467F8F508A9E528FA23E81923769722E69772248512B545E
35616C688589807F85939FB5ABD6E6B3D6EA89B7CE5891A4
467E92356C81194A6B1A373F132C310E1C1F050409020205
0000020000000101010800000B0000170A000D0D0D0D1110
0F0E14100F141F11082619082F1904210F05111717101919
0F1B1B101F22182C2B252E2B282D311B2E321A2E2F162E30
1325270E191B0F1314190D0F2E1211461A27552227612723
6C303A56213D3033381C343619343B15383E193A431A4E5C
</palette>
</flame>
<flame name="baseline" version="Apophysis 2.08 beta" size="600 600" center="0 0" scale="150" oversample="1" filter="0.2" quality="1" background="0 0 0" brightness="4" gamma="4" >
<xform weight="0.422330042096567" color="0" pdj="1" coefs="1.51523 0.740356 -3.048677 -1.455964 0.724135 -0.362059" pdj_a="1.09358" pdj_b="2.13048" pdj_c="2.54127" pdj_d="2.37267" />
<xform weight="0.564534951145298" color="0.13" julia="1" coefs="-1.381068 1.381068 -1.381068 -1.381068 0 0" />
<xform weight="0.0131350067581356" color="0.844" linear="1" popcorn="1" coefs="0.031393 -0.031367 0.031367 0.031393 0 0" />
<palette count="256" format="RGB">
FF0000D31616BD2121A72C2C9137377C4242714747664D4D
3A63631D7171008080008B8B00969600A1A100ACAC00B1B1
00B7B700CCCC00D7D700E2E200EDED00F8F800FBFB00FFFF
2CF0FF42E8FF58E0FF6DD8FF83D1FF8ECDFF99C9FFAFC2FF
C5BAFFFFA6FFE9A2FFD39FFFBD9CFFA799FF9C97FF9196FF
668FFF508CFF3A89FF2485FF0E82FF0781FF0080FF0B80FF
1680FF2C80FF3780FF4280FF4D80FF5880FF5D80FF6380FF
7980FF7785F4758BE96A96D35FA1BD59A6B254ACA749B791
3EC17C28D7501DE23A12ED2409F61200FF0016E9002CD300
58A7006D9100837C00996600AF5000BA4500C53A00DB2400
F10E00E90B00D31600BD2100B22600A72C009137007C4200
5058003A6300246E001973000E79000080000A7500146A00
1E5F003249003C3E004633004B2D005028005A1D00651200
8100008C00009800009E0000A40000AF0000BB0000C70000
D20000EA0000F00000F60000FD0000F2160BE82C16DD4221
C76E37BC8342B2994DACA452A7AF589CC56392DB6E87F179
80FF8080E99680E39B80DEA180D3AC80C8B780BEC180B3CC
809DE2808EF08080FF7A80F47580E96A80D35F80BD5480A7
4980913380662D805B2880501D803A12802407800E008000
2C841A3784204285265887336E8940838B4D998D5AAF8E66
C59073FF9595FF9393FF9292FF9090FF8D8DFF8B8BFF8888
FF8383FF8181FF8080FF7E7EFF7B7BFF7979FF7777FF7783
FF768EFF769AFF75A6FF75B1FF74BDFF74C9FF73D4FF73E0
FF72F8FF71FBFF71FFFF6BEDFF65DBFF5FC9FF5AB7FF54A5
FF4E93FF4881FF426FFF3C5DFF374BFF2D2DFA293AF62548
F12155ED1E63E81A70E4167EDF128BDB0E99D60AA6D106B4
CD02C1CA00CACC00B9CE00A7CF0096D10085D30073D50062
D70050D8003FDA002EDC001CDE000BDF0000D90C06D4180C
CE2413C82F19C33B1FBD4725B7532BB25F32AC6B38A6773E
9D8A489D7E429E723C9E66359F5B2FA04F29A04323A1371D
A12B16A21F10A3130AA30804A40000A000009C0000980000
9400009000008C00008800008400008000007C0000750000
</palette>
</flame>
</Flames>