examples : Updated example.md for first 7 examples, added SVG files, added example.cfg.

This commit is contained in:
kevin 2024-09-11 13:42:28 -04:00
parent af1c46cd32
commit 8515ff373c
9 changed files with 3605 additions and 47 deletions

518
examples/examples.cfg Normal file
View File

@ -0,0 +1,518 @@
{
base_dir: "~/src/caw/examples", // Base project directory. See 'sine_file_01' below.
io_dict: "~/src/caw/src/caw/cfg/io.cfg" // Runtime configuration file.
proc_dict: "~/src/caw/src/libcw/flow/proc_dict.cfg", // Processor class definition file.
subnet_dict: "~/src/caw/src/libcw/flow/subnet_dict.cfg", // User written subnet files
programs: {
rt_sine_00: {
dur_limit_secs:5.0,
network: {
procs: {
osc: { class:sine_tone, args:{ hz:100.0 }},
aout:{ class:audio_out, in:{ in:osc.out }, args:{ dev_label:"main"} }
}
}
}
// Demonstrate a simple two processor network.
sine_file_01: {
non_real_time_fl:true,
dur_limit_secs:5.0,
network: {
procs: {
osc: { class: sine_tone },
af: { class: audio_file_out, in: { in:osc.out } args:{ fname:"$/out.wav"} }
}
}
}
// Demonstrate a simple signal processing network
mod_sine_02: {
non_real_time_fl:true,
dur_limit_secs:5.0,
network: {
procs: {
lfo: { class: sine_tone, args:{ hz:3, dc:440, gain:110 }}
sh: { class: sample_hold, in:{ in:lfo.out } }
osc: { class: sine_tone, preset:mono, in:{ hz:sh.out } },
af: { class: audio_file_out, in: { in:osc.out } args:{ fname:"$/out.wav"} }
}
}
}
// Demonstrate applying a preset at initialization time.
presets_03: {
non_real_time_fl:true,
dur_limit_secs:5.0,
preset: "a",
network: {
procs: {
lfo: { class: sine_tone, args:{ hz:3, dc:440, gain:110 }}
sh: { class: sample_hold, in:{ in:lfo.out } }
osc: { class: sine_tone, in:{ hz:sh.out } },
af: { class: audio_file_out, in: { in:osc.out } args:{ fname:"$/out.wav"} }
}
presets:
{
a: { lfo: { hz:1.0, dc:880 }, osc: { gain:0.95 } },
b: { lfo: { hz:2.0, dc:220 }, osc: { gain:0.75 } },
c: { lfo: a880 },
d: [ a,b,0.5 ]
}
}
}
// Demonstrate the `print` processor and event programming.
program_04: {
non_real_time_fl:true,
dur_limit_secs: 10.0,
network {
procs: {
tmr: { class: timer, args:{ period_ms:1000.0 }},
cnt: { class: counter, in: { trigger:tmr.out }, args:{ min:0, max:3, inc:1, init:0, mode:modulo } },
print: { class: print, in: { in:cnt.out, eol_fl:cnt.out }, args:{ text:["my","count"] }}
}
}
}
// Demonstrate 'mult' inputs.
mult_inputs_05: {
non_real_time_fl:true,
dur_limit_secs: 10.0,
network: {
procs: {
tmr: { class: timer, args:{ period_ms:1000.0 }},
cnt: { class: counter, in: { trigger:tmr.out }, args:{ min:0, max:3, inc:1, init:0, mode:modulo } },
numb: { class: number, args:{ value:3 }},
sum: { class: add, in: { in0:cnt.out, in1:numb.value } },
print: { class: print, in: { in0:cnt.out, in1:sum.out, eol_fl:sum.out }, args:{ text:["cnt","add","count"] }}
}
}
}
// Demonstrate different forms of the in-stmt
mult_conn_06: {
non_real_time_fl:true,
dur_limit_secs: 5.0,
network: {
procs: {
// Create an oscillator with a single audio output containing 6 channels.
// Each of the channels is a different frequency.
osc: { class: sine_tone, args: { ch_cnt:6, hz:[110,220,440,880,1760, 3520] }},
// Split the single audio signal into three signals
split: { class: audio_split, in:{ in:osc.out }, args: { select:[ 0,0, 1,1, 2,2 ] } },
// Create merge.in0,in1,in2 by iterating across all outputs of 'split'.
merge_a: { class: audio_merge, in:{ in_:split.out_ } },
af_a: { class: audio_file_out, in:{ in:merge_a.out }, args:{ fname:"$/out_a.wav" }}
// Create merge.in0,in1 and connect them to split.out0 and split.out1
merge_b: { class: audio_merge, in:{ in_:split.out0_2 } },
af_b: { class: audio_file_out, in:{ in:merge_b.out }, args:{ fname:"$/out_b.wav" }}
// Create merge.in0,in1 and connect them both to split.out1
merge_c: { class: audio_merge, in:{ in0_2:split.out1 } },
af_c: { class: audio_file_out, in:{ in:merge_c.out }, args:{ fname:"$/out_c.wav" }}
}
}
}
// Demonstrate creating processors with explicit sfx-ids and connecting to them with a single in-stmt.
proc_suffix_07: {
non_real_time_fl:true,
dur_limit_secs: 5.0,
network: {
procs: {
osc: { class: sine_tone, args: { ch_cnt:6, hz:[110,220,440,880,1760, 3520] }},
split: { class: audio_split, in:{ in:osc.out }, args: { select:[ 0,0, 1,1, 2,2 ] } },
// Create 3 audio gain controls with explicit sfx-ids
g0: { class:audio_gain, in:{ in:split0.out0 }, args:{ gain:0.9} },
g1: { class:audio_gain, in:{ in:split0.out1 }, args:{ gain:0.5} },
g2: { class:audio_gain, in:{ in:split0.out2 }, args:{ gain:0.1} },
// Create audio-merge inputs and connect them to 3 consecutive gain controls
// by iterating the in-stmt over the source proc sfx-id.
merge: { class: audio_merge, in:{ in_:g_.out } },
af: { class: audio_file_out, in:{ in:merge.out }, args:{ fname:"$/out_a.wav" }}
}
}
}
// Demonstrate instantiating 'mult' variables from the an 'args' statement.
mix_08: {
non_real_time_fl:true,
dur_limit_secs:5.0,
network: {
procs: {
osc_a: { class: sine_tone, args: { hz:110 } },
osc_b: { class: sine_tone, args: { hz:220 } },
gain: { class: number, args: { value:0.5f } },
// Instantiate gain:0 and gain:1 to control the input gain of in:0 and in:1.
mix: { class: audio_mix, in: { in0:osc_a.out, in1:osc_b.out }, args:{ igain0:[0.8, 0], igain1:[0, 0.2] } },
af: { class: audio_file_out, in: { in:mix.out } args:{ fname:"$/out.wav"} }
}
}
}
// Demonstrate a network with a polyphonic subnet.
simple_poly_09: {
non_real_time_fl:true,
dur_limit_secs: 5.0,
network: {
procs: {
g_list: { class: list, args: { in:0, list:[ 110f,220f,440f ]}},
dc_list: { class: list, args: { in:0, list:[ 220f,440f,880f ]}},
osc_poly: {
class: poly,
args: { count:3 }, // Create 3 instances of 'network'.
network: {
procs: {
lfo: { class: sine_tone, in:{ _.dc:_.dc_list.value_, _.gain:_.g_list.value_ } args: { ch_cnt:1, hz:3 }},
sh: { class: sample_hold, in:{ in:lfo.out }},
osc: { class: sine_tone, in:{ hz: sh.out }},
}
}
}
// Iterate over the instances of `osc_poly.osc_.out` to create one `audio_merge`
// input for every output from the polyphonic network.
merge: { class: audio_merge, in:{ in_:osc_poly.osc_.out}, args:{ gain:1, out_gain:0.5 }},
af: { class: audio_file_out, in:{ in:merge.out } args:{ fname:"$/out.wav"} }
}
}
}
feedback_10: {
non_real_time_fl:true,
max_cycle_count: 10,
network: {
procs: {
a: { class: number, log:{value:0}, args:{ value:1 }},
b: { class: number, log:{value:0}, args:{ value:2 }},
add: { class: add, in: { in0:a.value, in1:b.value }, out: { out:b.store },
log:{out:0}, args:{ otype:int }}
}
}
},
feedback_11: {
non_real_time_fl:true,
max_cycle_count: 10,
network: {
procs: {
a: { class: number, log:{value:0}, args:{ value:1 }},
b: { class: reg, in:{ in:a.value }, log:{out:0} },
add: { class: add, in: { in0:a.value, in1:b.out }, out: { out:b.store },
log:{out:0}, args:{ otype:int }}
}
}
},
sample_gen_13: {
non_real_time_fl:false,
dur_limit_secs: 30.0,
network: {
procs: {
tempo: { class:number, args:{ in:2000.0 } },
note_dur: { class:number, args:{ in:1000.0 } },
tmrA: { class: timer, in:{ period_ms:tempo.out } },
cntA: { class: counter, in:{ trigger:tmrA.out }, args:{init:1, min:1, max:128, inc:7, repeat_fl:false, out_type:uint }},
tmrB: { class: timer, in:{ delay_ms:note_dur.out, period_ms:tempo.out } },
zero: { class: number, in:{ trigger:tmrB.out }, args:{ in:0 }},
stop_cnt: { class: counter, in:{ trigger:zero.out }, args:{min:0, max:19, inc:1, repeat_fl:false } },
stop: { class: halt, in:{ in:stop_cnt.upr_lim }},
vel: { class: number, in:{ in0:cntA.out, in1:zero.out }, args:{ out_type:uint }},
log: { class:print, in:{ in0:stop_cnt.out, in1:vel.out, eol_fl:vel.out },args:{ text:[ "i", "d1", ""] }},
note_msg: { class:midi_msg, in:{d1:vel.out, trigger:vel.out }, args:{ch:0, status:144, d0:60}},
damp_msg: { class:midi_msg, args:{ch:0, status:176, d0:64}},
mmerge: { class:midi_merge, in:{ in0:note_msg.out, in1:damp_msg.out }},
mout: { class:midi_out in:{ in:mmerge.out} , args:{ dev_label:"MIDIFACE 2x2", port_label:"MIDIFACE 2x2 Midi Out 1" }}
ain: { class: audio_in, args:{ dev_label:"main" }},
split: { class: audio_split, in:{ in:ain.out } args:{ select: [0,0, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1] }},
mark: { class: audio_marker, in:{ in:split.out0, trigger:vel.out }},
af: { class: audio_file_out, in:{ in:mark.out }, args:{ fname:"~/temp/samples1.wav"}},
aout: { class: audio_out, in:{ in:ain.out }, args:{ dev_label:"main"}},
}
}
},
sample_gen_14: {
non_real_time_fl:false,
network: {
procs: {
tempo: { class: number, args:{ in:1500.0 } },
tmrA: { class: timer, in:{ period_ms:tempo.out } },
cntA: { class: counter, in:{ trigger:tmrA.out }, args:{ init:1, min:1, max:128, inc:7, repeat_fl:false, out_type:uint }},
log: { class: print, in:{ in0:cntA.out, eol_fl:cntA.out }, args:{ text:["x",""] } },
stop: { class: halt, in:{ in:cntA.upr_lim } }
}
}
},
sample_gen_15: {
non_real_time_fl:false,
network: {
procs: {
mf: { class: midi_file, args:{ csv_fname:"~/temp/wt3/21_sample.csv" }},
mout: { class: midi_out in:{ in:mf.out }, args:{ dev_label:"MIDIFACE 2x2", port_label:"MIDIFACE 2x2 Midi Out 1" }},
stop: { class: halt, in:{ in:mf.done_fl }}
ain: { class: audio_in, args:{ dev_label:"main" }},
split: { class: audio_split, in:{ in:ain.out } args:{ select: [0,0, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1] }},
af: { class: audio_file_out, in:{ in:split.out0 }, args:{ fname:"~/temp/wt3/wav/21_samples.wav"}},
aout: { class: audio_out, in:{ in:ain.out }, args:{ dev_label:"main"}},
}
}
},
midi_voice_16: {
non_real_time_fl:false,
network: {
procs: {
mf: { class: midi_file, args:{ csv_fname:"~/temp/temp_midi.csv" }},
voc: { class: midi_voice, in: { in:mf.out } },
stop: { class: halt, in: { in:mf.done_fl }}
af: { class: audio_file_out, in:{ in:voc.out }, args:{ fname:"~/temp/wt/wav/samples.wav"}},
}
}
},
audio_mix_17: {
network: {
procs: {
oscA: { class:sine_tone, args:{ hz:100.0 }},
oscB: { class:sine_tone, args:{ hz:101.0 }},
amix: { class:audio_mix, in{ in0:oscA.out, in1:oscB.out }}
aout:{ class:audio_out, in:{ in:amix.out }, args:{ dev_label:"main"} }
}
}
}
poly_voice_18: {
non_real_time_fl:false,
dur_limit_secs:10,
network: {
procs: {
midi_in: { class:midi_in },
vctl: { class: poly_voice_ctl, in:{ in:midi_in.out }, args:{ voice_cnt:3 } },
voice_poly: {
class: poly,
args: { count:3 }
network: {
procs: {
voc: { class:midi_voice, in:{ _.in:_.vctl.out_ } out:{ _.done_fl:_.vctl.done_fl_ } },
}
}
}
asil: { class: audio_silence, args:{ ch_cnt:6 }},
amix: { class: audio_mix, in:{ in_:voice_poly.voc_.out } },
amrg: { class: audio_merge, in:{ in0:asil.out, in1:amix.out } },
aout: { class: audio_out, in:{ in:amrg.out }, args:{ dev_label:"main"}}
}
}
}
midi_split_19: {
non_real_time_fl:false,
dur_limit_secs:10,
network: {
procs: {
midi_in: { class:midi_in },
ms: { class:midi_split, in: { in:midi_in.out } },
map: { class: list, in:{in:ms.d0}, args: { cfg_fname:"/home/kevin/temp/map.cfg"}},
//mm: { class:midi_msg, in: {ch:ms.ch, status:ms.status, d1:map.out, trigger:map.out } args:{ d0:60 } },
log: { class: print, in: { in0:ms.ch, in1:ms.status, in2:ms.d0, in3:map.out, eol_fl:map.out }, args:{ text:["ch","st","d0","d1",""] } },
}
}
}
piano_voice_20: {
non_real_time_fl:false,
dur_limit_secs:30,
network: {
procs: {
midi_in: { class:midi_in },
vctl: { class: poly_voice_ctl, in:{ in:midi_in.out }, args:{ voice_cnt:3 } },
voice_poly: {
class: poly,
args: { count:3 }
network: {
procs: {
voc: { class:piano_voice, in:{ _.in:_.vctl.out_ },
out:{ _.done_fl:_.vctl.done_fl_ },
args:{ wtb_dir:"~/temp/temp_5.json", wtb_instr:"piano", test_pitch:60 } },
}
}
}
asil: { class: audio_silence, args:{ ch_cnt:6 }},
amix: { class: audio_mix, in:{ in_:voice_poly.voc_.out } args:{ igain_:1.0} },
asel: { class: audio_split, in:{ in:amix.out }, args:{ select:[0,1] }},
amrg: { class: audio_merge, in:{ in0:asil.out, in1:asel.out0, in2:asel.out1 }, args:{ out_gain:2.0 } },
aout: { class: audio_out, in:{ in:amrg.out }, args:{ dev_label:"main"}}
}
}
}
// Play stereo audio out channels 7&8 of the Scarlett.
audio_test_21: {
non_real_time_fl:false,
dur_limit_secs:10,
network: {
procs: {
asil: { class:audio_silence, args:{ ch_cnt:6 }}
osc: { class:sine_tone, args:{ hz:440.0, ch_cnt:2 }},
amrg: { class:audio_merge, in:{ in0:asil.out, in1:osc.out }, args:{ out_gain:1 } },
amtr: { class:audio_meter, in:{ in:amrg.out }, args:{ rpt_ms:500 }},
aout:{ class:audio_out, in:{ in:amrg.out }, args:{ dev_label:"main"} }
}
}
}
piano_voice_22: {
non_real_time_fl:false,
//dur_limit_secs:300,
network: {
procs: {
mf: { class: midi_file, args:{ csv_fname:"~/temp/all_midi.csv" }},
stop: { class: halt, in:{ in:mf.done_fl }}
vctl: { class: poly_voice_ctl, in:{ in:mf.out }, args:{ voice_cnt:3 } },
voice_poly: {
class: poly,
args: { count:3 }
network: {
procs: {
voc: { class:piano_voice, in:{ _.in:_.vctl.out_ },
out:{ _.done_fl:_.vctl.done_fl_ },
args:{ wtb_fname:"~/temp/temp_5.json", wtb_instr:"piano" } },
}
}
}
asil: { class: audio_silence, args:{ ch_cnt:6 }},
amix: { class: audio_mix, in:{ in_:voice_poly.voc_.out } args:{ igain_:1.0 }},
//amrg: { class: audio_merge, in:{ in0:asil.out, in1:amix.out }, args:{ out_gain:1.0 } },
aout: { class: audio_out, in:{ in:amix.out }, args:{ dev_label:"main"}}
}
}
}
sample_gen_23: {
non_real_time_fl:false,
network: {
procs: {
mf: { class: midi_file, args:{ csv_fname:"~/temp/wt1/21_sample.csv" }},
mout: { class: midi_out in:{ in:mf.out }, args:{ dev_label:"MIDIFACE 2x2", port_label:"MIDIFACE 2x2 Midi Out 1" }},
stop: { class: halt, in:{ in:mf.done_fl }}
ain: { class: audio_in, args:{ dev_label:"main" }},
split: { class: audio_split, in:{ in:ain.out } args:{ select: [0,0, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1] }},
//af: { class: audio_file_out, in:{ in:split.out0 }, args:{ bits:0, fname:"~/temp/test.wav"}},
asil: { class: audio_silence, args:{ ch_cnt:6 }},
amrg: { class: audio_merge, in:{ in0:asil.out, in1:split.out0 }, args:{ out_gain:1.0 } },
aout: { class: audio_out, in:{ in:amrg.out }, args:{ dev_label:"main"}}
}
}
},
}
}

View File

@ -16,12 +16,15 @@ system parameters that the program needs to compile and run the program.
sine_file_01: { sine_file_01: {
durLimitSecs:5.0, dur_limit_secs:5.0, // Run the network for 5 seconds
network: { network: {
procs: { procs: {
// Create a 'sine_tone' oscillator.
osc: { class: sine_tone }, osc: { class: sine_tone },
// Create an audio output file and fill it with the output of the oscillator.
af: { class: audio_file_out, in: { in:osc.out } args:{ fname:"$/out.wav"} } af: { class: audio_file_out, in: { in:osc.out } args:{ fname:"$/out.wav"} }
} }
} }
@ -30,7 +33,7 @@ system parameters that the program needs to compile and run the program.
} }
``` ```
![blah](svg/00_osc_af.svg) ![Example 0](svg/00_osc_af.svg, "`sine_file_01` processing network")
When executed this program will write a five second sine signal to an audio file When executed this program will write a five second sine signal to an audio file
named `~/src/caw/examples/sine_file_01/out.wav`. The output file name named `~/src/caw/examples/sine_file_01/out.wav`. The output file name
@ -74,7 +77,7 @@ Here are the class specifications for `sine_tone` and `audio_file_out`.
sine_tone: { sine_tone: {
vars: { vars: {
srate: { type:srate, value:0, doc:"Sine tone sample rate. 0=Use default system sample rate"} srate: { type:srate, value:0, doc:"Sine tone sample rate. 0=Use default system sample rate"}
chCnt: { type:uint, value:2, doc:"Output signal channel count."}, ch_cnt: { type:uint, value:2, doc:"Output signal channel count."},
hz: { type:coeff, value:440.0, doc:"Frequency in Hertz."}, hz: { type:coeff, value:440.0, doc:"Frequency in Hertz."},
phase: { type:coeff, value:0.0, doc:"Offset phase in radians."}, phase: { type:coeff, value:0.0, doc:"Offset phase in radians."},
dc: { type:coeff, value:0.0, doc:"DC offset applied after gain."}, dc: { type:coeff, value:0.0, doc:"DC offset applied after gain."},
@ -86,7 +89,7 @@ sine_tone: {
a220 : { hz:220 }, a220 : { hz:220 },
a440 : { hz:440 }, a440 : { hz:440 },
a880 : { hz:880 }, a880 : { hz:880 },
mono: { chCnt:1, gain:0.75 } mono: { ch_cnt:1, gain:0.75 }
} }
} }
@ -99,24 +102,68 @@ audio_file_out: {
} }
``` ```
Based on the `sine_tone` class all the default values for the signal generator The class definitions specify the names, types and default values for
are apparent. With this information it is clear that the audio file each variable. Since the `sine_tone` instance in `sine_file_00`
written by `sine_file_01` contains a stereo (`chCnt`=2), 440 Hertz signal doesn't override any of the the variable default values the generated
with an amplitude of 0.8. audio file must be a stereo (`ch_cnt`=2), 440 Hertz signal with an
amplitude of 0.8.
Note that unless stated otherwise all variables can be either input or output ports for their Note that unless stated otherwise all variables can be either input or
proc. The `no_src` attribute on `sine_tone.out` indicates that it is an output-only output ports for their processor. The `no_src` attribute on
variable. The `src` attribute on `audio_file_out.in` indicates that it must be connected to `sine_tone.out` indicates that it is an output-only variable. The
a source variable or the processor cannot be instantiated - and therefore the network it is contained `src` attribute on `audio_file_out.in` indicates that it must be
by cannot be instantiated. Note that this isn't to say that it can't be an output variable - only connected to a source variable or the processor cannot be instantiated
- and therefore the network it is contained by cannot be instantiated.
Note that this isn't to say that it can't be an output variable - only
that it must be connected. that it must be connected.
TODO:
1. more about types - especially the non-obvious 'srate','coeff'. Here is a complete list of possible variable attributes.
Link to proc class desc reference. Attribute | Description
2. more about presets. ----------|-------------------------------------------------------
3. variables may be a source for multiple inputs but only be connected to a single source. src | This variable must be connected to a source variable or the processor instantiation will fail.
4. change `sine_tone.chCnt` to `ch_cnt`. no_src | This variable cannot be connected to a source variable (it is write-only, or output only).
init | This variable is only read at processer instantiation time, changes during runtime will be ignored.
mult | This variable may be instantiated multiple times. See `mult_input_05` below.
out | This is a subnet output variable.
__caw__ uses types and does it's best at converting between types where the conversion will
not lose information.
Here are the list of built-in types:
Type | Description
---------|-----------------------------------
bool | true | false
uint | C unsigned
int | C int
float | C float
double | C double
string | Array of bytes.
time | POSIX timespec
cfg | cw object (JSON object)
audio | multi-channel audio array
spectrum | multi-channel spectrum in comlex or rect. coordinates.
midi | MIDI message array.
runtime | 'no_src' variable whose type is determined by the types of the other variables. See the 'list' processor.
numeric | bool | uint | int | float | double
all | This variable can be any type. Commonly used for variables which act as triggers. See the 'counter' processor.
A few type aliases are defined to help document the intended purpose of a given variable.
Type aliases:
Alias | Type | Description
---------|--------|----------------------------
srate | float | This is an audio sample rate value.
sample | float | This value is calculated from audio sample values (e.g. RMS )
coeff | float | This value will operate (e.g. add, multiply) on an audio signal.
ftime | double | Fractional time in seconds or milliseconds.
Also notice that the processor class has named presets. During
processor instantiaion these presets can be used to set the
initial state of the processor. See `mod_sine_02` below for
an example of a class preset used this way.
### Example 02: Modulated Sine Signal ### Example 02: Modulated Sine Signal
@ -133,7 +180,7 @@ between 330 and 550 which will be treated as frequency values by `osc`.
``` json ``` json
mod_sine_02: { mod_sine_02: {
durLimitSecs:5.0, dur_limit_secs:5.0,
network: { network: {
@ -147,9 +194,11 @@ mod_sine_02: {
} }
``` ```
![Example 2](svg/02_mod_sine.svg, "`mod_sine_02` processing network")
The `osc` instance in this example uses a `preset` statement. This will have The `osc` instance in this example uses a `preset` statement. This will have
the effect of applying the class preset `mono` to the `osc` when it is the effect of applying the class preset `mono` to the `osc` when it is
instantiated. Based on the `sine_tone` class description the `osc` will therefore instantiated. Based on the `sine_tone` class description the `osc` will then
have a single audio channel with an amplitude of 0.75. have a single audio channel with an amplitude of 0.75.
In this example the sample and hold unit is necessary to convert the audio signal to a scalar In this example the sample and hold unit is necessary to convert the audio signal to a scalar
@ -169,9 +218,8 @@ sample_hold: {
``` ```
The `sample_hold` class works by maintaining a buffer of the previous `period_ms` millisecond The `sample_hold` class works by maintaining a buffer of the previous `period_ms` millisecond
samples it has received. The output is both the value of the first sample in the buffer (`sh.out`) samples. It then outputs two values based on this buffer. `out` is simply the first
or the mean of all the values in the buffer (`sh.mean`). value from the buffer, and 'mean' is the average of all the values in the buffer.
### Example 03: Presets ### Example 03: Presets
@ -186,10 +234,13 @@ In this example four network presets are specified in the `presets` statement
and the "a" preset is automatically applied once the network is created and the "a" preset is automatically applied once the network is created
but before it starts to execute. but before it starts to execute.
If this example was run in real-time it would also be possible to apply
the the presets while the network was running.
``` JSON ``` JSON
presets_03: { presets_03: {
durLimitSecs:5.0, dur_limit_secs:5.0,
preset: "a", preset: "a",
network: { network: {
@ -215,7 +266,7 @@ presets_03: {
This example also shows how to apply `args` or `preset` values per channel. This example also shows how to apply `args` or `preset` values per channel.
Audio signals in __caw__ can contain an arbitrary number of signals. Audio signals in __caw__ can contain an arbitrary number of signals.
As shown by the `sine_tone` class the count of output channels (`sine_tone.chCnt`) As shown by the `sine_tone` class the count of output channels (`sine_tone.ch_cnt`)
is up to the network designer. Processors that receive and process incoming is up to the network designer. Processors that receive and process incoming
audio will often expand the count of internal audio processors to match audio will often expand the count of internal audio processors to match
the count of channels they must handle. The processor variables are the count of channels they must handle. The processor variables are
@ -270,7 +321,7 @@ TODO: Check that this accurately describes preset interpolation.
``` ```
program_04: { program_04: {
durLimitSecs: 10.0, dur_limit_secs: 10.0,
network { network {
procs: { procs: {
@ -282,6 +333,9 @@ program_04: {
} }
``` ```
![Example 4](svg/04_program.svg, "`program_04` processing network")
This program demonstrates how __caw__ passes messages between processors. This program demonstrates how __caw__ passes messages between processors.
In this case a timer generates a pulse every 1000 milliseconds In this case a timer generates a pulse every 1000 milliseconds
which in turn increments a modulo 3 counter. The output of the counter which in turn increments a modulo 3 counter. The output of the counter
@ -323,7 +377,7 @@ The __add__ processor then sums the output of _cnt_ and _numb_.
``` ```
mult_inputs_05: { mult_inputs_05: {
durLimitSecs: 10.0, dur_limit_secs: 10.0,
network { network {
procs: { procs: {
@ -337,15 +391,23 @@ mult_inputs_05: {
} }
``` ```
![Example 5](svg/05_mult_inputs.svg, "`mult_inputs_05` processing network")
The notable new concept introduced by this program is the concept of The notable new concept introduced by this program is the concept of
__mult__ variables. These are variables which can be instantiated __mult__ variables. These are variables which can be instantiated
multiple times by referencing them in the `in:{...}` statement and multiple times by referencing them in the `in:{...}` statement and
including an integer suffix. The _in_ variable of both __add__ and including an integer suffix. The _in_ variable of both __add__ and
__print__ have this attribute specified in their class descriptions. __print__ have the __mult__ attribute specified in their class descriptions.
In this program both of these processors have two `in` variables: In this program both of these processors have two `in` variables:
`in0` and `in1`. In practice they may have as many inputs as the `in0` and `in1`. In practice they may have as many inputs as the
network designer requires. network designer requires.
The ability to define processors with a programmable count of inputs or output
of a given type is a key feature to any data flow programming scheme.
For example consider an audio mixer. The count of signals that it may
need to combine can only be determined from the context in which it is used.
Likewise, as in this example, a summing processor should be able to
form a sum of any number of inputs.
### Example 06: Connecting __mult__ inputs ### Example 06: Connecting __mult__ inputs
@ -356,11 +418,11 @@ connection expression.
``` ```
mult_conn_06: { mult_conn_06: {
durLimitSecs: 5.0, dur_limit_secs: 5.0,
network: { network: {
procs: { procs: {
osc: { class: sine_tone, args: { chCnt:6, hz:[110,220,440,880,1760,3520] }}, osc: { class: sine_tone, args: { ch_cnt:6, hz:[110,220,440,880,1760,3520] }},
split: { class: audio_split, in:{ in:osc.out }, args: { select:[ 0,0, 1,1, 2,2 ] } }, split: { class: audio_split, in:{ in:osc.out }, args: { select:[ 0,0, 1,1, 2,2 ] } },
// Create merge.in0,in1,in2 by iterating across all outputs of 'split'. // Create merge.in0,in1,in2 by iterating across all outputs of 'split'.
@ -381,6 +443,8 @@ mult_conn_06: {
} }
``` ```
![Example 6](svg/06_mult_conn.svg, "`mult_conn_06` processing network")
The audio source for this network is a six channel signal generator, The audio source for this network is a six channel signal generator,
where the frequency is each channel is incremented by an octave. where the frequency is each channel is incremented by an octave.
The _split_ processor then splits the audio signal into three The _split_ processor then splits the audio signal into three
@ -392,17 +456,23 @@ variables `out0`,`out1` and `out2`.
The __audio_split__ class takes a single signal and splits it into multiple signals. The __audio_split__ class takes a single signal and splits it into multiple signals.
The __audio_merge__ class takes multple signals and concatenates them into a single signal. The __audio_merge__ class takes multple signals and concatenates them into a single signal.
Each of the three merge processor (merge_a,merge_b,merge_c) in `mult_conn_06` Each of the three merge processor (merge_a,merge_b,merge_c) in `mult_conn_06`
demonstrates a slightly different ways of selecting multiple signals to merge demonstrates three different ways of selecting multiple signals to merge
in with a single `in:{...}` statement expression. in with a single `in:{...}` statement expression.
1. Connect to all available source variables. The goal of this example is to show that fairly complex connections
between a source and destination processor can be achieved with
a single `in:{...}` statement. This syntax results in concise
network descriptions that are easier to read and modify then making lists
of individual connections between source and destination variables.
#### Connect to all available source variables on a single source processor.
``` ```
merge_a: { class: audio_merge, in:{ in_:split.out_ } }, merge_a: { class: audio_merge, in:{ in_:split.out_ } },
``` ```
`merge_a` creates three input variables (`in0`,`in1` and `in2`) and connects them `merge_a` creates three input variables (`in0`,`in1` and `in2`) and connects them
to three source variables (`split.out0`,`split.out1`, and `split.out2`). to three source variables (`split.out0`,`split.out1`, and `split.out2`).
The completely equivalent, and equally correct way of stating the same construct is: The equivalent but more verbose way of stating the same construct is:
`merge_a: { class: audio_merge, in:{ in0:split.out0, in1:split.out1, in2:split.out2 } }` `merge_a: { class: audio_merge, in:{ in0:split.out0, in1:split.out1, in2:split.out2 } }`
Aside from being more compact, the only other advantage to using the `_` (underscore) Aside from being more compact, the only other advantage to using the `_` (underscore)
@ -410,7 +480,7 @@ suffix notation is that the connections will expand and contract with
the count of outputs on _split_ should they change without having to change the count of outputs on _split_ should they change without having to change
the code. the code.
2. Connect to a select set of source variables. #### Connect to a select set of source variables on a single source processor.
``` ```
merge_b: { class: audio_merge, in:{ in_:split.out0_2 } }, merge_b: { class: audio_merge, in:{ in_:split.out0_2 } },
@ -427,7 +497,7 @@ the `in:{...}` statemennt could be changed to `in:{ in_:split.out1_2 }`.
Likewise `in:{ in_:split.out_ }` can be seen as equivalent to: Likewise `in:{ in_:split.out_ }` can be seen as equivalent to:
`in:{ in_:split.out0_3 }` in this example. `in:{ in_:split.out0_3 }` in this example.
3. Create and connect to a selected variables. #### Connect multiple destination variable to a single source processor variable.
The _begin_,_count_ notation can also be used on the destination The _begin_,_count_ notation can also be used on the destination
side of the `in:{...}` statment expression. side of the `in:{...}` statment expression.
@ -440,9 +510,6 @@ and connect both to `split.out1`. Note that creating and connecting
using the _begin_,_count_ notation is general. `in:{ in1_3:split.out0_2 }` using the _begin_,_count_ notation is general. `in:{ in1_3:split.out0_2 }`
produces a different result than the example, but is equally valid. produces a different result than the example, but is equally valid.
TODO: TODO:
- Add the 'no_create' attribute to the audio_split.out. - Add the 'no_create' attribute to the audio_split.out.
@ -454,19 +521,20 @@ An error should be generated.
As demonstrated in `mult_conn_06` variables are identified by their label As demonstrated in `mult_conn_06` variables are identified by their label
and an integer suffix id. By default, for singular variable the suffix id is set to 0. and an integer suffix id. By default, for non __mult__ variables, the suffix id is set to 0.
Using the `in:{...}` statement however variables that have the 'mult' attribute Using the `in:{...}` statement however variables that have the 'mult' attribute
can be instantiated multiple times with each instance having a different suffix id. can be instantiated multiple times with each instance having a different suffix id.
Processors instances use a similar naming scheme; they have both a text label Processors instances use a similar naming scheme; they have both a text label
and a suffix id. and a suffix id.
``` ```
proc_suffix_07: { proc_suffix_07: {
durLimitSecs: 5.0, dur_limit_secs: 5.0,
network: { network: {
procs: { procs: {
osc: { class: sine_tone, args: { chCnt:6, hz:[110,220,440,880,1760, 3520] }}, osc: { class: sine_tone, args: { ch_cnt:6, hz:[110,220,440,880,1760, 3520] }},
split: { class: audio_split, in:{ in:osc.out }, args: { select:[ 0,0, 1,1, 2,2 ] } }, split: { class: audio_split, in:{ in:osc.out }, args: { select:[ 0,0, 1,1, 2,2 ] } },
g0: { class:audio_gain, in:{ in:split0.out0 }, args:{ gain:0.9} }, g0: { class:audio_gain, in:{ in:split0.out0 }, args:{ gain:0.9} },
@ -481,6 +549,8 @@ proc_suffix_07: {
``` ```
![Example 7](svg/07_proc_suffix.svg, "`proc_suffix_06` processing network")
In this example three __audio_gain__ processors are instantiated with In this example three __audio_gain__ processors are instantiated with
the same label 'g' and are then differentiated by their suffix id's: the same label 'g' and are then differentiated by their suffix id's:
0,1, and 2. The merge processor is then able to connect to them using 0,1, and 2. The merge processor is then able to connect to them using

Binary file not shown.

View File

@ -0,0 +1,332 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="148.60725mm"
height="24.735685mm"
viewBox="0 0 148.60725 24.735685"
version="1.1"
id="svg3095"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="02_mod_sine.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview3097"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.2938725"
inkscape:cx="500.04928"
inkscape:cy="-29.755637"
inkscape:window-width="1444"
inkscape:window-height="1236"
inkscape:window-x="1171"
inkscape:window-y="175"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs3092">
<rect
x="404.14053"
y="53.316418"
width="238.02167"
height="132.0544"
id="rect3395" />
<marker
style="overflow:visible"
id="Arrow3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-4"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-4"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-4-9"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-4-6"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-21.296189,-18.661128)">
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111"
width="22.457563"
height="23.790617"
x="21.496189"
y="19.406197"
ry="3.2884471" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="27.161003"
y="26.366491"
id="text845"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166"
x="27.161003"
y="26.366491"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">lfo</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009"
width="12.875491"
height="8.7980967"
x="25.550957"
y="31.968773"
ry="4.0229349" />
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.510479;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1"
width="36.746838"
height="23.680138"
x="54.930851"
y="19.363691"
ry="3.4482086" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0"
width="12.875491"
height="8.7980967"
x="58.930374"
y="31.726437"
ry="4.0229349" />
<path
style="fill:none;stroke:#000000;stroke-width:0.573521;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 38.08301,36.112813 c 20.189377,-0.0451 20.189377,-0.0451 20.189377,-0.0451"
id="path1222" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="62.413773"
y="37.88813"
id="text1846"><tspan
sodipodi:role="line"
id="tspan1844"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="62.413773"
y="37.88813">in</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="26.646187"
y="37.915962"
id="text1846-1"><tspan
sodipodi:role="line"
id="tspan2038"
x="26.646187"
y="37.915962">out</tspan><tspan
sodipodi:role="line"
id="tspan2040"
x="26.646187"
y="45.862949" /></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5"
width="12.875491"
height="8.7980967"
x="76.813217"
y="31.774357"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="77.908447"
y="37.721546"
id="text1846-1-7"><tspan
sodipodi:role="line"
id="tspan2038-4"
x="77.908447"
y="37.721546">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-18"
x="77.908447"
y="45.668533" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="69.692787"
y="26.466518"
id="text1955"><tspan
sodipodi:role="line"
id="tspan1953"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="69.692787"
y="26.466518">sh</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.499818;stroke-dasharray:none;stroke-opacity:1"
id="rect111-4"
width="35.212135"
height="23.6908"
x="103.2001"
y="19.00878"
ry="3.2746499" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="118.86996"
y="25.92885"
id="text845-4"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166-7"
x="118.86996"
y="25.92885"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">osc</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-6"
width="12.875491"
height="8.7980967"
x="122.68378"
y="31.521448"
ry="4.0229349" />
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-3"
width="22.457563"
height="23.790617"
x="147.24588"
y="18.861128"
ry="3.4642961" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-1"
width="12.875491"
height="8.7980967"
x="151.30064"
y="31.279112"
ry="4.0229349" />
<path
style="fill:none;stroke:#000000;stroke-width:0.512506;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-4)"
d="m 135.52549,35.668158 c 15.14666,-0.048 15.14666,-0.048 15.14666,-0.048"
id="path1222-7" />
<path
style="fill:none;stroke:#000000;stroke-width:0.529367;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-4-9)"
d="m 89.8176,36.393686 c 16.47471,-0.04708 16.47471,-0.04708 16.47471,-0.04708"
id="path1222-7-4" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="154.78404"
y="37.440807"
id="text1846-5"><tspan
sodipodi:role="line"
id="tspan1844-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="154.78404"
y="37.440807">in</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="123.77898"
y="37.468639"
id="text1846-1-6"><tspan
sodipodi:role="line"
id="tspan2038-2"
x="123.77898"
y="37.468639">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-1"
x="123.77898"
y="45.415627" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="154.65471"
y="26.019194"
id="text1955-7"><tspan
sodipodi:role="line"
id="tspan1953-8"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="154.65471"
y="26.019194">af</tspan></text>
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text3393"
style="font-weight:bold;font-size:24.0287px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';white-space:pre;shape-inside:url(#rect3395);display:inline;fill:#d5f4ff;stroke-width:1.13386" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-8"
width="12.875491"
height="8.7980967"
x="106.80841"
y="31.608025"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="109.49105"
y="38.084381"
id="text1846-1-3"><tspan
sodipodi:role="line"
id="tspan2038-1"
x="109.49105"
y="38.084381">hz</tspan><tspan
sodipodi:role="line"
id="tspan2040-8"
x="109.49105"
y="46.031368" /></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

328
examples/svg/04_program.svg Normal file
View File

@ -0,0 +1,328 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="110.2815mm"
height="37.289169mm"
viewBox="0 0 110.2815 37.289169"
version="1.1"
id="svg3635"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="04_program.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview3637"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="3.659624"
inkscape:cx="183.76205"
inkscape:cy="63.394491"
inkscape:window-width="2250"
inkscape:window-height="1209"
inkscape:window-x="660"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs3632">
<marker
style="overflow:visible"
id="marker4492"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path4490"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-8"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-6"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-31.892239,-47.014222)">
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111"
width="22.457563"
height="23.790617"
x="32.092239"
y="47.661549"
ry="3.2884471" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="37.991394"
y="54.010426"
id="text845"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166"
x="37.991394"
y="54.010426"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">tmr</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009"
width="12.875491"
height="8.7980967"
x="36.147003"
y="60.224125"
ry="4.0229349" />
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.614859;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1"
width="34.753426"
height="36.32473"
x="65.579109"
y="47.671234"
ry="5.2894645" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.425025;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0"
width="26.216019"
height="8.6730719"
x="69.588959"
y="60.0443"
ry="3.9657669" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 48.67907,64.368166 c 20.189384,-0.0451 20.189384,-0.0451 20.189384,-0.0451"
id="path1222" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="71.951515"
y="66.143486"
id="text1846"><tspan
sodipodi:role="line"
id="tspan1844"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="71.951515"
y="66.143486">trigger</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="37.242237"
y="66.171318"
id="text1846-1"><tspan
sodipodi:role="line"
id="tspan2038"
x="37.242237"
y="66.171318">out</tspan><tspan
sodipodi:role="line"
id="tspan2040"
x="37.242237"
y="74.118309" /></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5"
width="12.875491"
height="8.7980967"
x="83.380455"
y="70.083885"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="84.271202"
y="76.031075"
id="text1846-1-7"><tspan
sodipodi:role="line"
id="tspan2038-4"
x="84.271202"
y="76.031075">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-18"
x="84.271202"
y="83.978065" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="80.288872"
y="54.72187"
id="text1955"><tspan
sodipodi:role="line"
id="tspan1953"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="80.288872"
y="54.72187">cnt</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.554624;stroke-dasharray:none;stroke-opacity:1"
id="rect111-4"
width="28.072836"
height="36.589718"
x="113.82359"
y="47.291534"
ry="5.0575972" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="122.12813"
y="53.572784"
id="text845-4"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166-7"
x="122.12813"
y="53.572784"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">print</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.377543;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-6"
width="20.57308"
height="8.7205534"
x="117.33202"
y="71.000046"
ry="3.9874783" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-8"
width="12.875491"
height="8.7980967"
x="117.40446"
y="59.863377"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="120.61629"
y="66.339737"
id="text1846-1-3"><tspan
sodipodi:role="line"
id="tspan2038-1"
x="120.61629"
y="66.339737">in</tspan><tspan
sodipodi:role="line"
id="tspan2040-8"
x="120.61629"
y="74.286728" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-dasharray:none;stroke-opacity:1"
x="106.59543"
y="65.004593"
id="text1846-1-3-4"><tspan
sodipodi:role="line"
id="tspan2038-1-8"
x="106.59543"
y="65.004593"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52778px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">1</tspan><tspan
sodipodi:role="line"
id="tspan2040-8-8"
x="106.59543"
y="72.951584" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52778px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-dasharray:none;stroke-opacity:1"
x="107.3233"
y="73.767891"
id="text1846-1-3-4-8"><tspan
sodipodi:role="line"
id="tspan4822"
x="107.3233"
y="73.767891">2</tspan><tspan
sodipodi:role="line"
id="tspan4824"
x="107.3233"
y="78.177612"></tspan><tspan
sodipodi:role="line"
id="tspan4826"
x="107.3233"
y="82.587341"></tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="119.47374"
y="77.580681"
id="text1846-1-3-3"><tspan
sodipodi:role="line"
id="tspan2038-1-3"
x="119.47374"
y="77.580681">eol_fl</tspan><tspan
sodipodi:role="line"
id="tspan2040-8-3"
x="119.47374"
y="85.527672" /></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4492)"
d="M 96.201623,73.294144 C 108.22039,63.577682 116.832,64.410621 116.832,64.410621"
id="path3984"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-weight:bold;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';fill:none;stroke:#000000;stroke-width:0.3;stroke-opacity:1"
x="124.12959"
y="76.090828"
id="text4576"><tspan
sodipodi:role="line"
id="tspan4574"
style="stroke-width:0.3"
x="124.12959"
y="76.090828" /></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-8)"
d="m 96.139571,74.813495 c 20.562079,-0.04491 20.562079,-0.04491 20.562079,-0.04491"
id="path1222-0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,523 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="169.01866mm"
height="64.132042mm"
viewBox="0 0 169.01866 64.132042"
version="1.1"
id="svg4975"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="mult_inputs_05.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview4977"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.914906"
inkscape:cx="514.26048"
inkscape:cy="25.685699"
inkscape:window-width="1444"
inkscape:window-height="1236"
inkscape:window-x="1768"
inkscape:window-y="54"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs4972">
<marker
style="overflow:visible"
id="marker6190"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path6188"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker6082"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path6080"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<rect
x="536.37793"
y="371.11859"
width="3.3166018"
height="15.753552"
id="rect5416" />
<marker
style="overflow:visible"
id="Arrow3-8"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-6"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker4492-7"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path4490-6"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-8-4"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-6-3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-14.874884,-43.592046)">
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111"
width="22.457563"
height="23.790617"
x="15.074884"
y="43.88979"
ry="3.2884471" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="20.597666"
y="50.320286"
id="text845"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166"
x="20.597666"
y="50.320286"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">tmr</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009"
width="12.875491"
height="8.7980967"
x="19.129646"
y="56.452366"
ry="4.0229349" />
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.614859;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1"
width="34.753426"
height="36.32473"
x="48.56179"
y="43.899475"
ry="5.2894645" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.425025;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0"
width="26.216019"
height="8.6730719"
x="52.571644"
y="56.272541"
ry="3.9657669" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 31.661738,60.596408 c 20.189391,-0.0451 20.189391,-0.0451 20.189391,-0.0451"
id="path1222" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="54.9342"
y="62.371727"
id="text1846"><tspan
sodipodi:role="line"
id="tspan1844"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="54.9342"
y="62.371727">trigger</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="20.224884"
y="62.399559"
id="text1846-1"><tspan
sodipodi:role="line"
id="tspan2038"
x="20.224884"
y="62.399559">out</tspan><tspan
sodipodi:role="line"
id="tspan2040"
x="20.224884"
y="70.34655" /></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.453686;stroke-dasharray:none;stroke-opacity:1"
id="rect111-11"
width="28.955778"
height="23.736931"
x="64.452728"
y="83.760315"
ry="3.2810264" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="70.477852"
y="89.475883"
id="text845-0"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166-8"
x="70.477852"
y="89.475883"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">numb</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.360447;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-50"
width="18.715378"
height="8.7376499"
x="69.019028"
y="95.97506"
ry="3.9952955" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="70.084045"
y="101.89201"
id="text1846-1-6"><tspan
sodipodi:role="line"
id="tspan2038-46"
x="70.084045"
y="101.89201">value</tspan><tspan
sodipodi:role="line"
id="tspan2040-2"
x="70.084045"
y="109.839" /></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5"
width="12.875491"
height="8.7980967"
x="66.363136"
y="66.312126"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="67.253883"
y="72.259315"
id="text1846-1-7"><tspan
sodipodi:role="line"
id="tspan2038-4"
x="67.253883"
y="72.259315">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-18"
x="67.253883"
y="80.206306" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="60.625717"
y="50.950111"
id="text1955"><tspan
sodipodi:role="line"
id="tspan1953"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="60.625717"
y="50.950111">cnt</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.671529;stroke-dasharray:none;stroke-opacity:1"
id="rect111-4"
width="27.955931"
height="53.864685"
x="155.60185"
y="44.107395"
ry="7.4454217" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="164.77049"
y="50.40036"
id="text845-4"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166-7"
x="164.77049"
y="50.40036"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">print</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.377543;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-6"
width="20.57308"
height="8.7205534"
x="159.05177"
y="78.340797"
ry="3.9874783" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-8"
width="12.875491"
height="8.7980967"
x="159.12422"
y="56.620785"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="161.27771"
y="63.097145"
id="text1846-1-3"><tspan
sodipodi:role="line"
id="tspan2038-1"
x="161.27771"
y="63.097145">in0</tspan><tspan
sodipodi:role="line"
id="tspan2040-8"
x="161.27771"
y="71.044136" /></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-8-2"
width="12.875491"
height="8.7980967"
x="159.35663"
y="67.592087"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="161.51012"
y="74.068443"
id="text1846-1-3-1"><tspan
sodipodi:role="line"
id="tspan2038-1-0"
x="161.51012"
y="74.068443">in1</tspan><tspan
sodipodi:role="line"
id="tspan2040-8-5"
x="161.51012"
y="82.015434" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="161.19351"
y="84.921432"
id="text1846-1-3-3"><tspan
sodipodi:role="line"
id="tspan2038-1-3"
x="161.19351"
y="84.921432">eol_fl</tspan><tspan
sodipodi:role="line"
id="tspan2040-8-3"
x="161.19351"
y="92.868423" /></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';fill:none;stroke:#000000;stroke-width:0.3;stroke-opacity:1"
x="107.11227"
y="72.319069"
id="text4576"><tspan
sodipodi:role="line"
id="tspan4574"
style="stroke-width:0.3"
x="107.11227"
y="72.319069" /></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.638227;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-0"
width="37.46933"
height="36.301361"
x="103.70988"
y="55.174351"
ry="5.2860618" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.310169;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3"
width="13.779133"
height="8.7879276"
x="107.65068"
y="67.478302"
ry="4.0182848" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="110.07064"
y="73.634933"
id="text1846-0"><tspan
sodipodi:role="line"
id="tspan1844-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="110.07064"
y="73.634933">in0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.310169;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-2"
width="13.779133"
height="8.7879276"
x="107.59612"
y="77.814201"
ry="4.0182848" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="110.01606"
y="83.970871"
id="text1846-0-8"><tspan
sodipodi:role="line"
id="tspan1844-9-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="110.01606"
y="83.970871">in1</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5-2"
width="12.875491"
height="8.7980967"
x="125.20372"
y="77.575348"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="126.09441"
y="83.522552"
id="text1846-1-7-5"><tspan
sodipodi:role="line"
id="tspan2038-4-4"
x="126.09441"
y="83.522552">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-18-0"
x="126.09441"
y="91.469543" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="113.11631"
y="62.213303"
id="text1955-5"><tspan
sodipodi:role="line"
id="tspan1953-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="113.11631"
y="62.213303">sum</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4492-7)"
d="m 138.02505,80.785511 c 12.01877,-9.716406 20.63037,-8.883469 20.63037,-8.883469"
id="path3984-7"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-8-4)"
d="m 137.963,82.304852 c 20.56207,-0.0449 20.56207,-0.0449 20.56207,-0.0449"
id="path1222-0-5" />
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text5414"
style="font-size:13.3333px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect5416);display:inline;fill:none;stroke:#000000;stroke-width:1.88976" />
<path
style="fill:none;stroke:#000000;stroke-width:0.565773;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-8)"
d="M 78.947788,71.038434 C 107.5342,70.997071 107.5342,70.997071 107.5342,70.997071"
id="path1222-0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.496023;marker-end:url(#marker6082)"
d="m 87.702928,99.612559 c 8.583224,-3.136083 9.023952,-11.671065 12.772322,-14.69703 3.42057,-2.761323 6.71245,-2.104153 6.71245,-2.104153"
id="path5550"
sodipodi:nodetypes="csc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.499999;marker-end:url(#marker6190)"
d="m 79.375864,70.660447 c 0,0 16.250131,-26.542293 42.606456,-19.629019 l 36.92007,9.684148"
id="path6186"
sodipodi:nodetypes="csc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,784 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="162.44518mm"
height="122.77153mm"
viewBox="0 0 162.44518 122.77153"
version="1.1"
id="svg6580"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="06_mult_conn.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview6582"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.587745"
inkscape:cx="323.25442"
inkscape:cy="320.54936"
inkscape:window-width="1444"
inkscape:window-height="1236"
inkscape:window-x="1564"
inkscape:window-y="151"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs6577">
<marker
style="overflow:visible"
id="marker8064"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="6.9999995"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path8062"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<rect
x="542.57184"
y="189.68469"
width="111.45431"
height="112.60379"
id="rect7143" />
<marker
style="overflow:visible"
id="Arrow3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="6.9999995"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-0"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-4"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-0-9"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-4-6"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-0-0"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-4-4"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker8064-2"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path8062-2"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker8064-5"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path8062-5"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-0-9-9"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-4-6-0"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3-0-9-9-8"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3-4-6-0-3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-6.9592436,-9.1353574)">
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111"
width="22.457563"
height="23.790617"
x="7.1592436"
y="66.112495"
ry="3.2884471" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="12.506958"
y="72.06208"
id="text845"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166"
x="12.506958"
y="72.06208"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">osc</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009"
width="12.875491"
height="8.7980967"
x="11.214002"
y="78.675072"
ry="4.0229349" />
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1"
width="22.457563"
height="23.790617"
x="144.45961"
y="18.918873"
ry="3.4642961" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0"
width="12.875491"
height="8.7980967"
x="148.51427"
y="31.336853"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="151.99763"
y="37.49855"
id="text1846"><tspan
sodipodi:role="line"
id="tspan1844"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="151.99763"
y="37.49855">in</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="12.309231"
y="84.622261"
id="text1846-1"><tspan
sodipodi:role="line"
id="tspan2038"
x="12.309231"
y="84.622261">out</tspan><tspan
sodipodi:role="line"
id="tspan2040"
x="12.309231"
y="92.569252" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="149.75166"
y="26.076939"
id="text1955"><tspan
sodipodi:role="line"
id="tspan1953"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="149.75166"
y="26.076939">af_a</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.732201;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-0"
width="40.811157"
height="43.866222"
x="36.655567"
y="58.962162"
ry="6.3876271" />
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.723443;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-0-9"
width="39.36977"
height="44.391068"
x="99.607552"
y="9.4970789"
ry="6.4640532" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.352778;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3"
width="17.911783"
height="8.7453184"
x="55.916519"
y="68.594643"
ry="3.9988017" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="57.786003"
y="74.729935"
id="text1846-0"><tspan
sodipodi:role="line"
id="tspan1844-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="57.786003"
y="74.729935">out0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.32628;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-6"
width="15.275771"
height="8.7718163"
x="120.96751"
y="31.314945"
ry="4.0109177" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="122.85026"
y="37.463486"
id="text1846-0-9"><tspan
sodipodi:role="line"
id="tspan1844-9-33"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="122.85026"
y="37.463486">out</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.352778;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4"
width="17.911783"
height="8.7453184"
x="55.856094"
y="78.825493"
ry="3.9988017" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="57.725586"
y="84.960762"
id="text1846-0-7"><tspan
sodipodi:role="line"
id="tspan1844-9-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="57.725586"
y="84.960762">out1</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.352778;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-0"
width="17.911783"
height="8.7453184"
x="56.049767"
y="89.60244"
ry="3.9988017" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="57.919289"
y="95.737709"
id="text1846-0-7-6"><tspan
sodipodi:role="line"
id="tspan1844-9-2-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="57.919289"
y="95.737709">out2</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-1"
width="13.875015"
height="8.7576838"
x="104.29129"
y="20.633781"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="106.19542"
y="26.790108"
id="text1846-0-0"><tspan
sodipodi:role="line"
id="tspan1844-9-3"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="106.19542"
y="26.790108">in0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-4"
width="13.875015"
height="8.7576838"
x="104.24448"
y="30.879097"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="106.135"
y="37.020935"
id="text1846-0-7-0"><tspan
sodipodi:role="line"
id="tspan1844-9-2-3"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="106.135"
y="37.020935">in1</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-0-9"
width="13.875015"
height="8.7576838"
x="104.3945"
y="41.67128"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="106.3287"
y="47.797882"
id="text1846-0-7-6-1"><tspan
sodipodi:role="line"
id="tspan1844-9-2-2-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="106.3287"
y="47.797882">in2</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.259897;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5-2"
width="9.6193991"
height="8.8381996"
x="40.619843"
y="78.650345"
ry="4.0412722" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="42.588921"
y="84.617668"
id="text1846-1-7-5"><tspan
sodipodi:role="line"
id="tspan2038-4-4"
x="42.588921"
y="84.617668">in</tspan><tspan
sodipodi:role="line"
id="tspan2040-18-0"
x="42.588921"
y="92.564659" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="46.015007"
y="65.95417"
id="text1955-5"><tspan
sodipodi:role="line"
id="tspan1953-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="46.015007"
y="65.95417">split</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="106.03257"
y="16.031654"
id="text1955-5-8"><tspan
sodipodi:role="line"
id="tspan1953-9-0"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="106.03257"
y="16.031654">merge_a</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-5"
width="22.457563"
height="23.790617"
x="145.44701"
y="61.521072"
ry="3.4642961" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-6"
width="12.875491"
height="8.7980967"
x="149.50166"
y="73.939056"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="152.98503"
y="80.100754"
id="text1846-6"><tspan
sodipodi:role="line"
id="tspan1844-4"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="152.98503"
y="80.100754">in</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="150.73906"
y="68.679138"
id="text1955-0"><tspan
sodipodi:role="line"
id="tspan1953-0"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="150.73906"
y="68.679138">af_b</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-5-1"
width="22.457563"
height="23.790617"
x="146.74686"
y="100.8559"
ry="3.4642961" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-6-4"
width="12.875491"
height="8.7980967"
x="150.80151"
y="113.2739"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="154.28488"
y="119.43559"
id="text1846-6-9"><tspan
sodipodi:role="line"
id="tspan1844-4-1"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="154.28488"
y="119.43559">in</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="152.03891"
y="108.01397"
id="text1955-0-0"><tspan
sodipodi:role="line"
id="tspan1953-0-7"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="152.03891"
y="108.01397">af_c</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.63356;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-0-9-4"
width="39.459652"
height="33.968182"
x="100.75442"
y="58.404346"
ry="4.9463134" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.32628;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-6-6"
width="15.275771"
height="8.7718163"
x="122.15931"
y="74.446312"
ry="4.0109177" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="124.04208"
y="80.594856"
id="text1846-0-9-2"><tspan
sodipodi:role="line"
id="tspan1844-9-33-6"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="124.04208"
y="80.594856">out</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-1-7"
width="13.875015"
height="8.7576838"
x="105.48312"
y="69.585991"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="107.38721"
y="75.742317"
id="text1846-0-0-5"><tspan
sodipodi:role="line"
id="tspan1844-9-3-6"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="107.38721"
y="75.742317">in0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-4-9"
width="13.875015"
height="8.7576838"
x="105.4363"
y="79.831306"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="107.32679"
y="85.973145"
id="text1846-0-7-0-8"><tspan
sodipodi:role="line"
id="tspan1844-9-2-3-7"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="107.32679"
y="85.973145">in1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="107.22437"
y="64.983864"
id="text1955-5-8-9"><tspan
sodipodi:role="line"
id="tspan1953-9-0-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="107.22437"
y="64.983864">merge_b</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.63356;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-0-9-4-6"
width="39.459652"
height="33.968182"
x="101.56464"
y="97.621925"
ry="4.9463134" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.32628;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-6-6-0"
width="15.275771"
height="8.7718163"
x="122.96954"
y="113.6639"
ry="4.0109177" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="124.85231"
y="119.81245"
id="text1846-0-9-2-2"><tspan
sodipodi:role="line"
id="tspan1844-9-33-6-7"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="124.85231"
y="119.81245">out</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-1-7-6"
width="13.875015"
height="8.7576838"
x="106.29335"
y="108.80357"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="108.19743"
y="114.9599"
id="text1846-0-0-5-1"><tspan
sodipodi:role="line"
id="tspan1844-9-3-6-3"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="108.19743"
y="114.9599">in0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-4-9-2"
width="13.875015"
height="8.7576838"
x="106.24653"
y="119.04889"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="108.13702"
y="125.19073"
id="text1846-0-7-0-8-1"><tspan
sodipodi:role="line"
id="tspan1844-9-2-3-7-5"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="108.13702"
y="125.19073">in1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="108.0346"
y="104.20145"
id="text1955-5-8-9-9"><tspan
sodipodi:role="line"
id="tspan1953-9-0-9-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="108.0346"
y="104.20145">merge_c</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.528144;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="M 23.827297,82.821022 C 40.1946,82.773842 40.1946,82.773842 40.1946,82.773842"
id="path1222" />
<path
style="fill:none;stroke:#000000;stroke-width:0.466417;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-0)"
d="m 138.50055,118.1591 c 11.9527,-0.0504 11.9527,-0.0504 11.9527,-0.0504"
id="path1222-2" />
<path
style="fill:none;stroke:#000000;stroke-width:0.466417;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-0-9)"
d="m 137.22912,78.189006 c 11.9527,-0.0504 11.9527,-0.0504 11.9527,-0.0504"
id="path1222-2-1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.65917;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-0-9-9)"
d="m 73.716704,73.266685 c 31.223206,-0.03854 31.223206,-0.03854 31.223206,-0.03854"
id="path1222-2-1-2" />
<path
style="fill:none;stroke:#000000;stroke-width:0.657965;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-0-9-9-8)"
d="m 73.923081,83.792689 c 31.076209,-0.03858 31.076209,-0.03858 31.076209,-0.03858"
id="path1222-2-1-2-8" />
<path
style="fill:none;stroke:#000000;stroke-width:0.466417;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3-0-0)"
d="m 136.25131,35.777959 c 11.9527,-0.0504 11.9527,-0.0504 11.9527,-0.0504"
id="path1222-2-2" />
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text7141"
style="font-size:13.3333px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect7143);display:inline;fill:none;stroke:#000000;stroke-width:1.88976" />
<path
style="fill:none;stroke:#000000;stroke-width:0.499999;marker-end:url(#marker8064)"
d="M 73.993358,72.539727 C 85.294679,68.622614 92.4238,45.63057 93.457322,35.904711 94.475075,26.327243 104.28275,25.40777 104.28275,25.40777"
id="path7532"
sodipodi:nodetypes="csc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.499999;marker-end:url(#marker8064-2)"
d="M 73.575055,82.502432 C 84.876376,78.585329 92.005497,55.593285 93.039019,45.867426 94.056772,36.289958 103.86443,35.370485 103.86443,35.370485"
id="path7532-0"
sodipodi:nodetypes="csc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.499999;marker-end:url(#marker8064-5)"
d="M 73.928808,93.27744 C 85.230129,89.36032 92.35925,66.368281 93.392772,56.642422 94.410525,47.064954 104.2182,46.145481 104.2182,46.145481"
id="path7532-2"
sodipodi:nodetypes="csc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.499999;marker-end:url(#marker8064)"
d="M 73.612411,85.143683 C 87.517122,121.35527 106.10718,123.61989 106.10718,123.61989"
id="path8685" />
<path
style="fill:none;stroke:#000000;stroke-width:0.496443;marker-end:url(#Arrow3)"
d="m 73.36016,84.978023 c 21.011548,26.901747 32.48837,28.243707 32.48837,28.243707"
id="path8801" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -0,0 +1,686 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="184.62759mm"
height="77.57325mm"
viewBox="0 0 184.62759 77.57325"
version="1.1"
id="svg9344"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="07_proc_suffix.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview9346"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.914906"
inkscape:cx="282.54269"
inkscape:cy="376.54141"
inkscape:window-width="1444"
inkscape:window-height="1236"
inkscape:window-x="1234"
inkscape:window-y="208"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs9341">
<marker
style="overflow:visible"
id="marker11426"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path11424"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker11306"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path11304"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker10758"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="6.9999995"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path10756"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker10514"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="6.9999995"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path10512"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker10448"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path10446"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker10374"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path10372"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="6.9999995"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-6.1443384,-28.200915)">
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111"
width="22.457563"
height="23.790617"
x="6.3443384"
y="53.755684"
ry="3.2884471" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="11.674072"
y="59.97266"
id="text845"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166"
x="11.674072"
y="59.97266"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">osc</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009"
width="12.875491"
height="8.7980967"
x="10.399089"
y="66.31826"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="11.494316"
y="72.26545"
id="text1846-1"><tspan
sodipodi:role="line"
id="tspan2038"
x="11.494316"
y="72.26545">out</tspan><tspan
sodipodi:role="line"
id="tspan2040"
x="11.494316"
y="80.21244" /></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.450052;stroke-dasharray:none;stroke-opacity:1"
id="rect111-0"
width="28.489365"
height="23.740564"
x="87.995026"
y="28.425941"
ry="3.2815287" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="101.05468"
y="35.684265"
id="text845-4"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166-0"
x="101.05468"
y="35.684265"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">g0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-9"
width="12.875491"
height="8.7980967"
x="102.07891"
y="40.963493"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="103.17416"
y="46.910683"
id="text1846-1-1"><tspan
sodipodi:role="line"
id="tspan2038-9"
x="103.17416"
y="46.910683">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-6"
x="103.17416"
y="54.85767" /></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-0"
width="40.811157"
height="43.866222"
x="35.840668"
y="46.60535"
ry="6.3876271" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.352778;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3"
width="17.911783"
height="8.7453184"
x="55.101624"
y="56.237831"
ry="3.9988017" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="56.971161"
y="62.373123"
id="text1846-0"><tspan
sodipodi:role="line"
id="tspan1844-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="56.971161"
y="62.373123">out0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.352778;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4"
width="17.911783"
height="8.7453184"
x="55.041206"
y="66.468681"
ry="3.9988017" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="56.910675"
y="72.603951"
id="text1846-0-7"><tspan
sodipodi:role="line"
id="tspan1844-9-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="56.910675"
y="72.603951">out1</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.352778;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-0"
width="17.911783"
height="8.7453184"
x="55.234863"
y="77.245628"
ry="3.9988017" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="57.104424"
y="83.380898"
id="text1846-0-7-6"><tspan
sodipodi:role="line"
id="tspan1844-9-2-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="57.104424"
y="83.380898">out2</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.259897;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5-2"
width="9.6193991"
height="8.8381996"
x="39.804939"
y="66.293533"
ry="4.0412722" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="41.774033"
y="72.260857"
id="text1846-1-7-5"><tspan
sodipodi:role="line"
id="tspan2038-4-4"
x="41.774033"
y="72.260857">in</tspan><tspan
sodipodi:role="line"
id="tspan2040-18-0"
x="41.774033"
y="80.207848" /></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.259897;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5-2-2"
width="9.6193991"
height="8.8381996"
x="90.319305"
y="41.114517"
ry="4.0412722" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="92.288399"
y="47.081841"
id="text1846-1-7-5-5"><tspan
sodipodi:role="line"
id="tspan2038-4-4-4"
x="92.288399"
y="47.081841">in</tspan><tspan
sodipodi:role="line"
id="tspan2040-18-0-4"
x="92.288399"
y="55.028828" /></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.450052;stroke-dasharray:none;stroke-opacity:1"
id="rect111-0-9"
width="28.489365"
height="23.740564"
x="88.031456"
y="54.733021"
ry="3.2815287" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="101.09192"
y="61.42207"
id="text845-4-9"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166-0-3"
x="101.09192"
y="61.42207"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">g1</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-9-6"
width="12.875491"
height="8.7980967"
x="102.11536"
y="67.270576"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="103.21056"
y="73.217766"
id="text1846-1-1-0"><tspan
sodipodi:role="line"
id="tspan2038-9-5"
x="103.21056"
y="73.217766">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-6-0"
x="103.21056"
y="81.164757" /></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.259897;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5-2-2-2"
width="9.6193991"
height="8.8381996"
x="90.355728"
y="67.4216"
ry="4.0412722" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="92.324806"
y="73.388924"
id="text1846-1-7-5-5-9"><tspan
sodipodi:role="line"
id="tspan2038-4-4-4-4"
x="92.324806"
y="73.388924">in</tspan><tspan
sodipodi:role="line"
id="tspan2040-18-0-4-3"
x="92.324806"
y="81.335915" /></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.450052;stroke-dasharray:none;stroke-opacity:1"
id="rect111-0-5"
width="28.489365"
height="23.740564"
x="88.19368"
y="81.808578"
ry="3.2815287" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="101.25771"
y="87.911751"
id="text845-4-1"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166-0-7"
x="101.25771"
y="87.911751"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">g2</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-9-4"
width="12.875491"
height="8.7980967"
x="102.27756"
y="94.34613"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="103.37281"
y="100.29331"
id="text1846-1-1-3"><tspan
sodipodi:role="line"
id="tspan2038-9-1"
x="103.37281"
y="100.29331">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-6-4"
x="103.37281"
y="108.2403" /></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.259897;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-5-2-2-6"
width="9.6193991"
height="8.8381996"
x="90.517967"
y="94.497154"
ry="4.0412722" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="92.487053"
y="100.46448"
id="text1846-1-7-5-5-94"><tspan
sodipodi:role="line"
id="tspan2038-4-4-4-2"
x="92.487053"
y="100.46448">in</tspan><tspan
sodipodi:role="line"
id="tspan2040-18-0-4-2"
x="92.487053"
y="108.41147" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="45.200081"
y="53.597359"
id="text1955-5"><tspan
sodipodi:role="line"
id="tspan1953-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="45.200081"
y="53.597359">split</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.528144;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 23.012395,70.46421 c 16.36726,-0.04718 16.36726,-0.04718 16.36726,-0.04718"
id="path1222" />
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-0-9"
width="39.36977"
height="44.391068"
x="122.62897"
y="46.378525"
ry="6.4640532" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.32628;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-6"
width="15.275771"
height="8.7718163"
x="143.98901"
y="68.196388"
ry="4.0109177" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="145.87177"
y="74.344933"
id="text1846-0-9"><tspan
sodipodi:role="line"
id="tspan1844-9-33"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="145.87177"
y="74.344933">out</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-1"
width="13.875015"
height="8.7576838"
x="127.31279"
y="57.515228"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="129.21692"
y="63.671555"
id="text1846-0-0"><tspan
sodipodi:role="line"
id="tspan1844-9-3"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="129.21692"
y="63.671555">in0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-4"
width="13.875015"
height="8.7576838"
x="127.26598"
y="67.760544"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="129.15649"
y="73.902382"
id="text1846-0-7-0"><tspan
sodipodi:role="line"
id="tspan1844-9-2-3"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="129.15649"
y="73.902382">in1</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-0-9"
width="13.875015"
height="8.7576838"
x="127.41599"
y="78.552727"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="129.35019"
y="84.679329"
id="text1846-0-7-6-1"><tspan
sodipodi:role="line"
id="tspan1844-9-2-2-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="129.35019"
y="84.679329">in2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="129.05408"
y="52.913101"
id="text1955-5-8"><tspan
sodipodi:role="line"
id="tspan1953-9-0"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="129.05408"
y="52.913101">merge</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1"
width="22.457563"
height="23.790617"
x="168.11436"
y="55.126965"
ry="3.4642961" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0"
width="12.875491"
height="8.7980967"
x="172.5309"
y="67.561363"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="176.01427"
y="73.723061"
id="text1846"><tspan
sodipodi:role="line"
id="tspan1844"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="176.01427"
y="73.723061">in</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="175.88493"
y="62.301449"
id="text1955"><tspan
sodipodi:role="line"
id="tspan1953"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="175.88493"
y="62.301449">af</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.405073;stroke-dasharray:none;marker-end:url(#marker10374)"
d="M 73.064516,60.406236 C 79.461644,44.360725 89.897698,44.981353 89.897698,44.981353"
id="path10340"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.403254;stroke-dasharray:none;marker-end:url(#marker10448)"
d="m 73.09917,81.365091 c 3.817868,17.159242 17.321656,17.640975 17.321656,17.640975"
id="path10444"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;marker-end:url(#marker10514)"
d="m 72.870175,70.780949 17.506294,0.390239"
id="path10510" />
<path
style="fill:none;stroke:#000000;stroke-width:0.392454;stroke-dasharray:none;marker-end:url(#marker10514)"
d="m 114.92777,45.158016 c 3.17867,17.369032 11.91428,16.996214 11.91428,16.996214"
id="path10594"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.399904;stroke-dasharray:none;marker-end:url(#marker10758)"
d="M 115.31162,98.67252 C 121.817,84.230169 127.30928,82.721853 127.30928,82.721853"
id="path10654"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;marker-end:url(#marker11306)"
d="m 114.93947,71.73234 12.30606,0.353507"
id="path11302" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;marker-end:url(#marker11426)"
d="m 159.23758,72.13034 13.17198,0.102565"
id="path11422" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

317
examples/svg/08_mix.svg Normal file
View File

@ -0,0 +1,317 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="94.084084mm"
height="51.884533mm"
viewBox="0 0 94.084084 51.884533"
version="1.1"
id="svg11814"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="08_mix.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview11816"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.829812"
inkscape:cx="-8.4708155"
inkscape:cy="127.60874"
inkscape:window-width="1444"
inkscape:window-height="1236"
inkscape:window-x="1297"
inkscape:window-y="36"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs11811">
<marker
style="overflow:visible"
id="marker12707"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path12705"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="marker12661"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path12659"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-14.223965,-30.070103)">
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111"
width="22.457563"
height="23.790617"
x="14.423965"
y="30.270103"
ry="3.2884471" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="17.768917"
y="36.995285"
id="text845"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166"
x="17.768917"
y="36.995285"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">osc_a</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009"
width="12.875491"
height="8.7980967"
x="19.537046"
y="42.83268"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="20.632277"
y="48.779869"
id="text1846-1"><tspan
sodipodi:role="line"
id="tspan2038"
x="20.632277"
y="48.779869">out</tspan><tspan
sodipodi:role="line"
id="tspan2040"
x="20.632277"
y="56.726856" /></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-6"
width="22.457563"
height="23.790617"
x="15.018853"
y="57.96402"
ry="3.2884471" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632;stroke-dasharray:none;stroke-opacity:1"
x="18.376963"
y="64.089928"
id="text845-4"
transform="scale(0.9783609,1.0221177)"><tspan
sodipodi:role="line"
id="tspan1166-1"
x="18.376963"
y="64.089928"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.530632">osc_b</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-2"
width="12.875491"
height="8.7980967"
x="20.131935"
y="70.526596"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="21.227165"
y="76.473785"
id="text1846-1-8"><tspan
sodipodi:role="line"
id="tspan2038-8"
x="21.227165"
y="76.473785">out</tspan><tspan
sodipodi:role="line"
id="tspan2040-9"
x="21.227165"
y="84.420776" /></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.348798;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1-0-9"
width="39.420971"
height="33.709995"
x="42.824318"
y="37.486912"
ry="4.9087172" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.32628;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-6"
width="15.275771"
height="8.7718163"
x="64.209961"
y="53.509537"
ry="4.0109177" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="66.092712"
y="59.658081"
id="text1846-0-9"><tspan
sodipodi:role="line"
id="tspan1844-9-33"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="66.092712"
y="59.658081">out</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-1"
width="13.875015"
height="8.7576838"
x="47.822926"
y="48.649216"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="50.496204"
y="54.805542"
id="text1846-0-0"><tspan
sodipodi:role="line"
id="tspan1844-9-3"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="50.496204"
y="54.805542">in0</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.31071;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0-3-4-4"
width="13.875015"
height="8.7576838"
x="47.703823"
y="58.894531"
ry="4.0044556" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="50.43578"
y="65.036369"
id="text1846-0-7-0"><tspan
sodipodi:role="line"
id="tspan1844-9-2-3"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="50.43578"
y="65.036369">in1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="57.147491"
y="44.819435"
id="text1955-5-8"><tspan
sodipodi:role="line"
id="tspan1953-9-0"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="57.147491"
y="44.819435">mix</tspan></text>
<rect
style="fill:#d5f4ff;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1"
id="rect111-1"
width="22.457563"
height="23.790617"
x="85.650482"
y="40.445358"
ry="3.4642961" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;stroke-opacity:1"
id="rect1009-0"
width="12.875491"
height="8.7980967"
x="90.067017"
y="52.879757"
ry="4.0229349" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="93.550385"
y="59.041454"
id="text1846"><tspan
sodipodi:role="line"
id="tspan1844"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="93.550385"
y="59.041454">in</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1"
x="93.421051"
y="47.619843"
id="text1955"><tspan
sodipodi:role="line"
id="tspan1953"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35759px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="93.421051"
y="47.619843">af</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.4;marker-end:url(#marker12661)"
d="m 32.390445,47.394889 c 6.082613,4.824545 15.141048,6.28759 15.141048,6.28759"
id="path12147"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;marker-end:url(#marker12707)"
d="M 32.984918,74.891952 C 39.458188,65.680577 47.362485,63.368425 47.362485,63.368425"
id="path12149"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;marker-end:url(#Arrow3)"
d="M 79.444439,57.440313 89.87333,57.578296"
id="path12151" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB