Fossil

Changes On Branch pikchrshow
Login

Changes On Branch pikchrshow

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch pikchrshow Excluding Merge-Ins

This is equivalent to a diff from d2b69d16 to 833dfc1b

2020-09-10
16:19
Merge in changes for the new /pikchrshow webpage. ... (check-in: 0b2f8388 user: drh tags: trunk)
16:15
Add in the latest Pikchr module with bug fixes and with support for up to 5 strings per object. ... (check-in: d6639e46 user: drh tags: trunk)
15:02
Added a small gap to the top of /pikchrshow's content area. ... (Closed-Leaf check-in: 833dfc1b user: stephan tags: pikchrshow)
13:59
Ajaxified pikchrshow. ... (check-in: 075f6f8d user: stephan tags: pikchrshow)
01:08
Merge enhancements from trunk. ... (check-in: 3f1b8862 user: drh tags: pikchrshow)
01:06
Update the pikchr.c file from the latest source from the Pikchr website. ... (check-in: d2b69d16 user: drh tags: trunk)
00:54
Add the 'defHeader' command to TH1. ... (check-in: c1cb6886 user: mistachkin tags: trunk)

Changes to src/builtin.c.

623
624
625
626
627
628
629
630








631
632
633
634
635
636
637
    CX("/* Length of UUID hashes for display purposes. */");
    CX("hashDigits: %d, hashDigitsUrl: %d,\n",
       hash_digits(0), hash_digits(1));
    CX("editStateMarkers: {"
       "/*Symbolic markers to denote certain edit states.*/"
       "isNew:'[+]', isModified:'[*]', isDeleted:'[-]'},\n");
    CX("confirmerButtonTicks: 3 "
       "/*default fossil.confirmer tick count.*/\n");








    CX("};\n"/* fossil.config */);
#if 0
    /* Is it safe to emit the CSRF token here? Some pages add it
    ** as a hidden form field. */
    if(g.zCsrfToken[0]!=0){
      CX("window.fossil.csrfToken = %!j;\n",
         g.zCsrfToken);







|
>
>
>
>
>
>
>
>







623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
    CX("/* Length of UUID hashes for display purposes. */");
    CX("hashDigits: %d, hashDigitsUrl: %d,\n",
       hash_digits(0), hash_digits(1));
    CX("editStateMarkers: {"
       "/*Symbolic markers to denote certain edit states.*/"
       "isNew:'[+]', isModified:'[*]', isDeleted:'[-]'},\n");
    CX("confirmerButtonTicks: 3 "
       "/*default fossil.confirmer tick count.*/,\n");
    /* Inject certain info about the current skin... */
    CX("skin:{");
    /* can leak a local filesystem path:
       CX("name: %!j,", skin_in_use());*/
    CX("isDark: %s"
       "/*true if the current skin has the 'white-foreground' detail*/",
       skin_detail_boolean("white-foreground") ? "true" : "false");
    CX("}\n"/*fossil.config.skin*/);
    CX("};\n"/* fossil.config */);
#if 0
    /* Is it safe to emit the CSRF token here? Some pages add it
    ** as a hidden form field. */
    if(g.zCsrfToken[0]!=0){
      CX("window.fossil.csrfToken = %!j;\n",
         g.zCsrfToken);
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
      style_emit_script_tag(1,0);
    }
    /* The remaining window.fossil bootstrap code is not dependent on
    ** C-runtime state... */
    builtin_request_js("fossil.bootstrap.js");
  }
}


/*
** Convenience wrapper which calls builtin_request_js() for a series
** of builtin scripts named fossil.NAME.js. The first time it is
** called, it also calls builtin_emit_script_fossil_bootstrap() to
** initialize the window.fossil JS API. The first argument is the NAME
** part of the first API to emit. All subsequent arguments must be







<







658
659
660
661
662
663
664

665
666
667
668
669
670
671
      style_emit_script_tag(1,0);
    }
    /* The remaining window.fossil bootstrap code is not dependent on
    ** C-runtime state... */
    builtin_request_js("fossil.bootstrap.js");
  }
}


/*
** Convenience wrapper which calls builtin_request_js() for a series
** of builtin scripts named fossil.NAME.js. The first time it is
** called, it also calls builtin_emit_script_fossil_bootstrap() to
** initialize the window.fossil JS API. The first argument is the NAME
** part of the first API to emit. All subsequent arguments must be

Added src/fossil.page.pikchrshow.js.















































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
(function(F/*the fossil object*/){
  "use strict";
  /**
     Client-side implementation of the /pikchrshow app. Requires that
     the fossil JS bootstrapping is complete and that these fossil
     JS APIs have been installed: fossil.fetch, fossil.dom
  */
  const E = (s)=>document.querySelector(s),
        D = F.dom,
        P = F.page;
  F.onPageLoad(function() {
    document.body.classList.add('pikchrshow');
    P.e = { /* various DOM elements we work with... */
      previewTarget: E('#pikchrshow-output'),
      btnSubmit: E('#pikchr-submit-preview'),
      cbDarkMode: E('#flipcolors-wrapper > input[type=checkbox]'),
      taContent: E('#content')
    };

    P.e.cbDarkMode.addEventListener('change', function(ev){
      if(ev.target.checked) D.addClass(P.e.previewTarget, 'dark-mode');
      else D.removeClass(P.e.previewTarget, 'dark-mode');
    }, false);
    if(P.e.cbDarkMode.checked) D.addClass(P.e.previewTarget, 'dark-mode');

    P.e.btnSubmit.addEventListener('click', function(){
      P.preview();
    }, false);
  }/*F.onPageLoad()*/);

  P.preview = function fp(){
    if(!fp.hasOwnProperty('toDisable')){
      fp.toDisable = [
        P.e.btnSubmit, P.e.taContent
      ];
      fp.target = P.e.previewTarget;
      fp.updateView = function(c,isError){
        D.enable(fp.toDisable);
        fp.target.innerHTML = c || '';
        if(isError) D.addClass(fp.target, 'error');
        else D.removeClass(fp.target, 'error');
      };
    }
    D.disable(fp.toDisable);
    const content = this.e.taContent.value;
    if(!content){
      fp.updateView("No pikchr content!",true);
      return this;
    }
    const self = this;
    const fd = new FormData();
    fd.append('ajax', true);
    fd.append('content',content);
    F.message(
      "Fetching preview..."
    ).fetch('pikchrshow',{
      payload: fd,
      responseHeaders: 'x-pikchrshow-is-error',
      onload: (r,header)=>{
        fp.updateView(r,+header ? true : false);
        F.message('Updated preview.');
      },
      onerror: (e)=>{
        F.fetch.onerror(e);
        fp.updateView("Error fetching preview: "+e, true);
      }
    });
    return this;
  }/*preview()*/;

})(window.fossil);

Changes to src/main.mk.

103
104
105
106
107
108
109

110
111
112
113
114
115
116
  $(SRCDIR)/merge.c \
  $(SRCDIR)/merge3.c \
  $(SRCDIR)/moderate.c \
  $(SRCDIR)/name.c \
  $(SRCDIR)/path.c \
  $(SRCDIR)/piechart.c \
  $(SRCDIR)/pikchr.c \

  $(SRCDIR)/pivot.c \
  $(SRCDIR)/popen.c \
  $(SRCDIR)/pqueue.c \
  $(SRCDIR)/printf.c \
  $(SRCDIR)/publish.c \
  $(SRCDIR)/purge.c \
  $(SRCDIR)/rebuild.c \







>







103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  $(SRCDIR)/merge.c \
  $(SRCDIR)/merge3.c \
  $(SRCDIR)/moderate.c \
  $(SRCDIR)/name.c \
  $(SRCDIR)/path.c \
  $(SRCDIR)/piechart.c \
  $(SRCDIR)/pikchr.c \
  $(SRCDIR)/pikchrshow.c \
  $(SRCDIR)/pivot.c \
  $(SRCDIR)/popen.c \
  $(SRCDIR)/pqueue.c \
  $(SRCDIR)/printf.c \
  $(SRCDIR)/publish.c \
  $(SRCDIR)/purge.c \
  $(SRCDIR)/rebuild.c \
229
230
231
232
233
234
235

236
237
238
239
240
241
242
  $(SRCDIR)/fossil.confirmer.js \
  $(SRCDIR)/fossil.copybutton.js \
  $(SRCDIR)/fossil.dom.js \
  $(SRCDIR)/fossil.fetch.js \
  $(SRCDIR)/fossil.numbered-lines.js \
  $(SRCDIR)/fossil.page.fileedit.js \
  $(SRCDIR)/fossil.page.forumpost.js \

  $(SRCDIR)/fossil.page.wikiedit-wysiwyg-legacy.js \
  $(SRCDIR)/fossil.page.wikiedit.js \
  $(SRCDIR)/fossil.popupwidget.js \
  $(SRCDIR)/fossil.storage.js \
  $(SRCDIR)/fossil.tabs.js \
  $(SRCDIR)/graph.js \
  $(SRCDIR)/href.js \







>







230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
  $(SRCDIR)/fossil.confirmer.js \
  $(SRCDIR)/fossil.copybutton.js \
  $(SRCDIR)/fossil.dom.js \
  $(SRCDIR)/fossil.fetch.js \
  $(SRCDIR)/fossil.numbered-lines.js \
  $(SRCDIR)/fossil.page.fileedit.js \
  $(SRCDIR)/fossil.page.forumpost.js \
  $(SRCDIR)/fossil.page.pikchrshow.js \
  $(SRCDIR)/fossil.page.wikiedit-wysiwyg-legacy.js \
  $(SRCDIR)/fossil.page.wikiedit.js \
  $(SRCDIR)/fossil.popupwidget.js \
  $(SRCDIR)/fossil.storage.js \
  $(SRCDIR)/fossil.tabs.js \
  $(SRCDIR)/graph.js \
  $(SRCDIR)/href.js \
358
359
360
361
362
363
364

365
366
367
368
369
370
371
  $(OBJDIR)/merge_.c \
  $(OBJDIR)/merge3_.c \
  $(OBJDIR)/moderate_.c \
  $(OBJDIR)/name_.c \
  $(OBJDIR)/path_.c \
  $(OBJDIR)/piechart_.c \
  $(OBJDIR)/pikchr_.c \

  $(OBJDIR)/pivot_.c \
  $(OBJDIR)/popen_.c \
  $(OBJDIR)/pqueue_.c \
  $(OBJDIR)/printf_.c \
  $(OBJDIR)/publish_.c \
  $(OBJDIR)/purge_.c \
  $(OBJDIR)/rebuild_.c \







>







360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
  $(OBJDIR)/merge_.c \
  $(OBJDIR)/merge3_.c \
  $(OBJDIR)/moderate_.c \
  $(OBJDIR)/name_.c \
  $(OBJDIR)/path_.c \
  $(OBJDIR)/piechart_.c \
  $(OBJDIR)/pikchr_.c \
  $(OBJDIR)/pikchrshow_.c \
  $(OBJDIR)/pivot_.c \
  $(OBJDIR)/popen_.c \
  $(OBJDIR)/pqueue_.c \
  $(OBJDIR)/printf_.c \
  $(OBJDIR)/publish_.c \
  $(OBJDIR)/purge_.c \
  $(OBJDIR)/rebuild_.c \
505
506
507
508
509
510
511

512
513
514
515
516
517
518
 $(OBJDIR)/merge.o \
 $(OBJDIR)/merge3.o \
 $(OBJDIR)/moderate.o \
 $(OBJDIR)/name.o \
 $(OBJDIR)/path.o \
 $(OBJDIR)/piechart.o \
 $(OBJDIR)/pikchr.o \

 $(OBJDIR)/pivot.o \
 $(OBJDIR)/popen.o \
 $(OBJDIR)/pqueue.o \
 $(OBJDIR)/printf.o \
 $(OBJDIR)/publish.o \
 $(OBJDIR)/purge.o \
 $(OBJDIR)/rebuild.o \







>







508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
 $(OBJDIR)/merge.o \
 $(OBJDIR)/merge3.o \
 $(OBJDIR)/moderate.o \
 $(OBJDIR)/name.o \
 $(OBJDIR)/path.o \
 $(OBJDIR)/piechart.o \
 $(OBJDIR)/pikchr.o \
 $(OBJDIR)/pikchrshow.o \
 $(OBJDIR)/pivot.o \
 $(OBJDIR)/popen.o \
 $(OBJDIR)/pqueue.o \
 $(OBJDIR)/printf.o \
 $(OBJDIR)/publish.o \
 $(OBJDIR)/purge.o \
 $(OBJDIR)/rebuild.o \
842
843
844
845
846
847
848

849
850
851
852
853
854
855
	$(OBJDIR)/merge_.c:$(OBJDIR)/merge.h \
	$(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h \
	$(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h \
	$(OBJDIR)/name_.c:$(OBJDIR)/name.h \
	$(OBJDIR)/path_.c:$(OBJDIR)/path.h \
	$(OBJDIR)/piechart_.c:$(OBJDIR)/piechart.h \
	$(OBJDIR)/pikchr_.c:$(OBJDIR)/pikchr.h \

	$(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h \
	$(OBJDIR)/popen_.c:$(OBJDIR)/popen.h \
	$(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h \
	$(OBJDIR)/printf_.c:$(OBJDIR)/printf.h \
	$(OBJDIR)/publish_.c:$(OBJDIR)/publish.h \
	$(OBJDIR)/purge_.c:$(OBJDIR)/purge.h \
	$(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h \







>







846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
	$(OBJDIR)/merge_.c:$(OBJDIR)/merge.h \
	$(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h \
	$(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h \
	$(OBJDIR)/name_.c:$(OBJDIR)/name.h \
	$(OBJDIR)/path_.c:$(OBJDIR)/path.h \
	$(OBJDIR)/piechart_.c:$(OBJDIR)/piechart.h \
	$(OBJDIR)/pikchr_.c:$(OBJDIR)/pikchr.h \
	$(OBJDIR)/pikchrshow_.c:$(OBJDIR)/pikchrshow.h \
	$(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h \
	$(OBJDIR)/popen_.c:$(OBJDIR)/popen.h \
	$(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h \
	$(OBJDIR)/printf_.c:$(OBJDIR)/printf.h \
	$(OBJDIR)/publish_.c:$(OBJDIR)/publish.h \
	$(OBJDIR)/purge_.c:$(OBJDIR)/purge.h \
	$(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h \
1630
1631
1632
1633
1634
1635
1636








1637
1638
1639
1640
1641
1642
1643
$(OBJDIR)/pikchr_.c:	$(SRCDIR)/pikchr.c $(OBJDIR)/translate
	$(OBJDIR)/translate $(SRCDIR)/pikchr.c >$@

$(OBJDIR)/pikchr.o:	$(OBJDIR)/pikchr_.c $(OBJDIR)/pikchr.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pikchr.o -c $(OBJDIR)/pikchr_.c

$(OBJDIR)/pikchr.h:	$(OBJDIR)/headers









$(OBJDIR)/pivot_.c:	$(SRCDIR)/pivot.c $(OBJDIR)/translate
	$(OBJDIR)/translate $(SRCDIR)/pivot.c >$@

$(OBJDIR)/pivot.o:	$(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c








>
>
>
>
>
>
>
>







1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
$(OBJDIR)/pikchr_.c:	$(SRCDIR)/pikchr.c $(OBJDIR)/translate
	$(OBJDIR)/translate $(SRCDIR)/pikchr.c >$@

$(OBJDIR)/pikchr.o:	$(OBJDIR)/pikchr_.c $(OBJDIR)/pikchr.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pikchr.o -c $(OBJDIR)/pikchr_.c

$(OBJDIR)/pikchr.h:	$(OBJDIR)/headers

$(OBJDIR)/pikchrshow_.c:	$(SRCDIR)/pikchrshow.c $(OBJDIR)/translate
	$(OBJDIR)/translate $(SRCDIR)/pikchrshow.c >$@

$(OBJDIR)/pikchrshow.o:	$(OBJDIR)/pikchrshow_.c $(OBJDIR)/pikchrshow.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pikchrshow.o -c $(OBJDIR)/pikchrshow_.c

$(OBJDIR)/pikchrshow.h:	$(OBJDIR)/headers

$(OBJDIR)/pivot_.c:	$(SRCDIR)/pivot.c $(OBJDIR)/translate
	$(OBJDIR)/translate $(SRCDIR)/pivot.c >$@

$(OBJDIR)/pivot.o:	$(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c

Changes to src/makemake.tcl.

113
114
115
116
117
118
119

120
121
122
123
124
125
126
  merge
  merge3
  moderate
  name
  path
  piechart
  pikchr

  pivot
  popen
  pqueue
  printf
  publish
  purge
  rebuild







>







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
  merge
  merge3
  moderate
  name
  path
  piechart
  pikchr
  pikchrshow
  pivot
  popen
  pqueue
  printf
  publish
  purge
  rebuild

Added src/pikchrshow.c.















































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
** Copyright (c) 2020 D. Richard Hipp
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the Simplified BSD License (also
** known as the "2-Clause License" or "FreeBSD License".)
**
** This program is distributed in the hope that it will be useful,
** but without any warranty; without even the implied warranty of
** merchantability or fitness for a particular purpose.
**
** Author contact information:
**   drh@hwaci.com
**   http://www.hwaci.com/drh/
**
*******************************************************************************
**
** This file contains fossil-specific code related to pikchr.
*/
#include "config.h"
#include <assert.h>
#include <ctype.h>
#include "pikchrshow.h"


/*
** WEBPAGE: pikchrshow
**
** A basic pikchr code editor and renderer, allowing users with write-
** or wiki-write permissions to experiment with pikchr code.
*/
void pikchrshow_cmd(void){
  const char *zContent = 0;
  int isDark, flipColors;

  login_check_credentials();
  if( !g.perm.RdWiki && !g.perm.Read && !g.perm.RdForum ){
    cgi_redirectf("%s/login?g=%s/pikchrshow", g.zTop, g.zTop);
  }
  zContent = P("content");
  if(P("ajax")!=0){
    /* Called from the JS-side preview updater. */
    cgi_set_content_type("text/html");
    if(zContent && *zContent){
      int w = 0, h = 0;
      char *zOut = pikchr(zContent, "pikchr", 0, &w, &h);
      if( w>0 && h>0 ){
        const char *zNonce = safe_html_nonce(1);
        CX("%s\n%s%s", zNonce, zOut, zNonce);
      }else{
        cgi_printf_header("x-pikchrshow-is-error: 1\r\n");
        CX("<pre>\n%s\n</pre>\n", zOut);
      }
      fossil_free(zOut);
    }else{
      CX("<pre>No content! Nothing to render</pre>");
    }
    return;
  }
  isDark = skin_detail_boolean("white-foreground");
  flipColors = zContent ? P("flipcolors")!=0 : isDark;
  if(!zContent){
    zContent = "arrow right 200% \"Markdown\" \"Source\"\n"
      "box rad 10px \"Markdown\" \"Formatter\" \"(markdown.c)\" fit\n"
      "arrow right 200% \"HTML+SVG\" \"Output\"\n"
      "arrow <-> down from last box.s\n"
      "box same \"Pikchr\" \"Formatter\" \"(pikchr.c)\" fit\n";
  }
  style_header("PikchrShow");
  CX("<style>");
  CX("div.content { padding-top: 0.5em }");
  CX("#sbs-wrapper {"
     "display: flex; flex-direction: row; flex-wrap: wrap;"
     "}");
  CX("#sbs-wrapper > * {margin: 0 0 1em 0}");
  CX("#pikchrshow-output, #pikchrshow-form"
     "{display: flex; flex-direction: column}");
  CX("#pikchrshow-form {flex: 2 1 auto}");
  CX("#pikchrshow-form > * {margin: 0.25em 0}");
  CX("#pikchrshow-output {"
     "flex: 1 1 auto; border-width: 1px; border-style: solid;"
     "border-radius: 0.25em; padding: 0.5em;"
     "}");
  CX("#pikchrshow-output > pre, "
     "#pikchrshow-output > pre > div, "
     "#pikchrshow-output > pre > div > pre "
     "{margin: 0; padding: 0}");
  CX("#pikchrshow-controls {"
     "display: flex; flex-direction: row; align-items: center;"
     "}");
  CX("#pikchrshow-controls > * {"
     "display: inline; margin-left: 0.5em;"
     "}");
  CX("#pikchrshow-controls > .input-with-label > * {"
     "cursor: pointer;"
     "}");
  CX("#pikchrshow-output.dark-mode > svg {"
     /* Flip the colors to approximate a dark theme look */
     "filter: invert(1) hue-rotate(180deg);"
     "}");
  CX("</style>");
  CX("<div>Input pikchr code and tap Preview to render it:</div>");
  CX("<div id='sbs-wrapper'>");
  CX("<div id='pikchrshow-form'>");
  CX("<textarea id='content' name='content' rows='15'>%s</textarea>",
     zContent/*safe-for-%s*/);
  CX("<div id='pikchrshow-controls'>");
  CX("<button id='pikchr-submit-preview'>Preview</button>");
  style_labeled_checkbox("flipcolors-wrapper", "flipcolors",
                         "Simulate dark color theme?",
                         "1", flipColors, 0);
  CX("</div>"/*#pikchrshow-controls*/);
  CX("</div>"/*#pikchrshow-form*/);
  CX("<div id='pikchrshow-output'>");
  if(*zContent){
    int w = 0, h = 0;
    char *zOut = pikchr(zContent, "pikchr", 0, &w, &h);
    if( w>0 && h>0 ){
      const char *zNonce = safe_html_nonce(1);
      CX("%s\n%s%s", zNonce, zOut, zNonce);
    }else{
      CX("<pre>\n%s\n</pre>\n", zOut);
    }
    fossil_free(zOut);
  }
  CX("</div>"/*#pikchrshow-output*/);
  CX("</div>"/*sbs-wrapper*/);
  if(!builtin_bundle_all_fossil_js_apis()){
    builtin_emit_fossil_js_apis("dom", "fetch", 0);
  }
  builtin_emit_fossil_js_apis("page.pikchrshow", 0);
  builtin_fulfill_js_requests();
  style_footer();
}

Changes to win/Makefile.dmc.

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
TCC    = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
LIBS   = $(DMDIR)\extra\lib\ zlib wsock32 advapi32 dnsapi

SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0

SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen

SRC   = add_.c ajax_.c alerts_.c allrepo_.c attach_.c backlink_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c interwiki_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pikchr_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c terminal_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c xfer_.c xfersetup_.c zip_.c

OBJ   = $(OBJDIR)\add$O $(OBJDIR)\ajax$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backlink$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\extcgi$O $(OBJDIR)\file$O $(OBJDIR)\fileedit$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\fuzz$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\hook$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\interwiki$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pikchr$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\terminal$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O


RC=$(DMDIR)\bin\rcc
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__

APPNAME = $(OBJDIR)\fossil$(E)

all: $(APPNAME)

$(APPNAME) : translate$E mkindex$E codecheck1$E headers  $(OBJ) $(OBJDIR)\link
	cd $(OBJDIR)
	codecheck1$E $(SRC)
	$(DMDIR)\bin\link @link

$(OBJDIR)\fossil.res:	$B\win\fossil.rc
	$(RC) $(RCFLAGS) -o$@ $**

$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
	+echo add ajax alerts allrepo attach backlink backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export extcgi file fileedit finfo foci forum fshell fusefs fuzz glob graph gzip hname hook http http_socket http_ssl http_transport import info interwiki json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pikchr pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar terminal th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp xfer xfersetup zip shell sqlite3 th th_lang > $@
	+echo fossil >> $@
	+echo fossil >> $@
	+echo $(LIBS) >> $@
	+echo. >> $@
	+echo fossil >> $@

translate$E: $(SRCDIR)\translate.c







|

|


















|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
TCC    = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
LIBS   = $(DMDIR)\extra\lib\ zlib wsock32 advapi32 dnsapi

SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0

SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen

SRC   = add_.c ajax_.c alerts_.c allrepo_.c attach_.c backlink_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c interwiki_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pikchr_.c pikchrshow_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c terminal_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c xfer_.c xfersetup_.c zip_.c

OBJ   = $(OBJDIR)\add$O $(OBJDIR)\ajax$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backlink$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\extcgi$O $(OBJDIR)\file$O $(OBJDIR)\fileedit$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\fuzz$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\hook$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\interwiki$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pikchr$O $(OBJDIR)\pikchrshow$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\terminal$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O


RC=$(DMDIR)\bin\rcc
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__

APPNAME = $(OBJDIR)\fossil$(E)

all: $(APPNAME)

$(APPNAME) : translate$E mkindex$E codecheck1$E headers  $(OBJ) $(OBJDIR)\link
	cd $(OBJDIR)
	codecheck1$E $(SRC)
	$(DMDIR)\bin\link @link

$(OBJDIR)\fossil.res:	$B\win\fossil.rc
	$(RC) $(RCFLAGS) -o$@ $**

$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
	+echo add ajax alerts allrepo attach backlink backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export extcgi file fileedit finfo foci forum fshell fusefs fuzz glob graph gzip hname hook http http_socket http_ssl http_transport import info interwiki json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pikchr pikchrshow pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar terminal th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp xfer xfersetup zip shell sqlite3 th th_lang > $@
	+echo fossil >> $@
	+echo fossil >> $@
	+echo $(LIBS) >> $@
	+echo. >> $@
	+echo fossil >> $@

translate$E: $(SRCDIR)\translate.c
665
666
667
668
669
670
671






672
673
674
675
676
677
678
	+translate$E $** > $@

$(OBJDIR)\pikchr$O : pikchr_.c pikchr.h
	$(TCC) -o$@ -c pikchr_.c

pikchr_.c : $(SRCDIR)\pikchr.c
	+translate$E $** > $@







$(OBJDIR)\pivot$O : pivot_.c pivot.h
	$(TCC) -o$@ -c pivot_.c

pivot_.c : $(SRCDIR)\pivot.c
	+translate$E $** > $@








>
>
>
>
>
>







665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
	+translate$E $** > $@

$(OBJDIR)\pikchr$O : pikchr_.c pikchr.h
	$(TCC) -o$@ -c pikchr_.c

pikchr_.c : $(SRCDIR)\pikchr.c
	+translate$E $** > $@

$(OBJDIR)\pikchrshow$O : pikchrshow_.c pikchrshow.h
	$(TCC) -o$@ -c pikchrshow_.c

pikchrshow_.c : $(SRCDIR)\pikchrshow.c
	+translate$E $** > $@

$(OBJDIR)\pivot$O : pivot_.c pivot.h
	$(TCC) -o$@ -c pivot_.c

pivot_.c : $(SRCDIR)\pivot.c
	+translate$E $** > $@

991
992
993
994
995
996
997
998
999
$(OBJDIR)\zip$O : zip_.c zip.h
	$(TCC) -o$@ -c zip_.c

zip_.c : $(SRCDIR)\zip.c
	+translate$E $** > $@

headers: makeheaders$E page_index.h builtin_data.h VERSION.h
	 +makeheaders$E add_.c:add.h ajax_.c:ajax.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backlink_.c:backlink.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h extcgi_.c:extcgi.h file_.c:file.h fileedit_.c:fileedit.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h fuzz_.c:fuzz.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h hook_.c:hook.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h interwiki_.c:interwiki.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pikchr_.c:pikchr.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h terminal_.c:terminal.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
	@copy /Y nul: headers







|

997
998
999
1000
1001
1002
1003
1004
1005
$(OBJDIR)\zip$O : zip_.c zip.h
	$(TCC) -o$@ -c zip_.c

zip_.c : $(SRCDIR)\zip.c
	+translate$E $** > $@

headers: makeheaders$E page_index.h builtin_data.h VERSION.h
	 +makeheaders$E add_.c:add.h ajax_.c:ajax.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backlink_.c:backlink.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h extcgi_.c:extcgi.h file_.c:file.h fileedit_.c:fileedit.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h fuzz_.c:fuzz.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h hook_.c:hook.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h interwiki_.c:interwiki.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pikchr_.c:pikchr.h pikchrshow_.c:pikchrshow.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h terminal_.c:terminal.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
	@copy /Y nul: headers

Changes to win/Makefile.mingw.

515
516
517
518
519
520
521

522
523
524
525
526
527
528
  $(SRCDIR)/merge.c \
  $(SRCDIR)/merge3.c \
  $(SRCDIR)/moderate.c \
  $(SRCDIR)/name.c \
  $(SRCDIR)/path.c \
  $(SRCDIR)/piechart.c \
  $(SRCDIR)/pikchr.c \

  $(SRCDIR)/pivot.c \
  $(SRCDIR)/popen.c \
  $(SRCDIR)/pqueue.c \
  $(SRCDIR)/printf.c \
  $(SRCDIR)/publish.c \
  $(SRCDIR)/purge.c \
  $(SRCDIR)/rebuild.c \







>







515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
  $(SRCDIR)/merge.c \
  $(SRCDIR)/merge3.c \
  $(SRCDIR)/moderate.c \
  $(SRCDIR)/name.c \
  $(SRCDIR)/path.c \
  $(SRCDIR)/piechart.c \
  $(SRCDIR)/pikchr.c \
  $(SRCDIR)/pikchrshow.c \
  $(SRCDIR)/pivot.c \
  $(SRCDIR)/popen.c \
  $(SRCDIR)/pqueue.c \
  $(SRCDIR)/printf.c \
  $(SRCDIR)/publish.c \
  $(SRCDIR)/purge.c \
  $(SRCDIR)/rebuild.c \
641
642
643
644
645
646
647

648
649
650
651
652
653
654
  $(SRCDIR)/fossil.confirmer.js \
  $(SRCDIR)/fossil.copybutton.js \
  $(SRCDIR)/fossil.dom.js \
  $(SRCDIR)/fossil.fetch.js \
  $(SRCDIR)/fossil.numbered-lines.js \
  $(SRCDIR)/fossil.page.fileedit.js \
  $(SRCDIR)/fossil.page.forumpost.js \

  $(SRCDIR)/fossil.page.wikiedit-wysiwyg-legacy.js \
  $(SRCDIR)/fossil.page.wikiedit.js \
  $(SRCDIR)/fossil.popupwidget.js \
  $(SRCDIR)/fossil.storage.js \
  $(SRCDIR)/fossil.tabs.js \
  $(SRCDIR)/graph.js \
  $(SRCDIR)/href.js \







>







642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
  $(SRCDIR)/fossil.confirmer.js \
  $(SRCDIR)/fossil.copybutton.js \
  $(SRCDIR)/fossil.dom.js \
  $(SRCDIR)/fossil.fetch.js \
  $(SRCDIR)/fossil.numbered-lines.js \
  $(SRCDIR)/fossil.page.fileedit.js \
  $(SRCDIR)/fossil.page.forumpost.js \
  $(SRCDIR)/fossil.page.pikchrshow.js \
  $(SRCDIR)/fossil.page.wikiedit-wysiwyg-legacy.js \
  $(SRCDIR)/fossil.page.wikiedit.js \
  $(SRCDIR)/fossil.popupwidget.js \
  $(SRCDIR)/fossil.storage.js \
  $(SRCDIR)/fossil.tabs.js \
  $(SRCDIR)/graph.js \
  $(SRCDIR)/href.js \
770
771
772
773
774
775
776

777
778
779
780
781
782
783
  $(OBJDIR)/merge_.c \
  $(OBJDIR)/merge3_.c \
  $(OBJDIR)/moderate_.c \
  $(OBJDIR)/name_.c \
  $(OBJDIR)/path_.c \
  $(OBJDIR)/piechart_.c \
  $(OBJDIR)/pikchr_.c \

  $(OBJDIR)/pivot_.c \
  $(OBJDIR)/popen_.c \
  $(OBJDIR)/pqueue_.c \
  $(OBJDIR)/printf_.c \
  $(OBJDIR)/publish_.c \
  $(OBJDIR)/purge_.c \
  $(OBJDIR)/rebuild_.c \







>







772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
  $(OBJDIR)/merge_.c \
  $(OBJDIR)/merge3_.c \
  $(OBJDIR)/moderate_.c \
  $(OBJDIR)/name_.c \
  $(OBJDIR)/path_.c \
  $(OBJDIR)/piechart_.c \
  $(OBJDIR)/pikchr_.c \
  $(OBJDIR)/pikchrshow_.c \
  $(OBJDIR)/pivot_.c \
  $(OBJDIR)/popen_.c \
  $(OBJDIR)/pqueue_.c \
  $(OBJDIR)/printf_.c \
  $(OBJDIR)/publish_.c \
  $(OBJDIR)/purge_.c \
  $(OBJDIR)/rebuild_.c \
917
918
919
920
921
922
923

924
925
926
927
928
929
930
 $(OBJDIR)/merge.o \
 $(OBJDIR)/merge3.o \
 $(OBJDIR)/moderate.o \
 $(OBJDIR)/name.o \
 $(OBJDIR)/path.o \
 $(OBJDIR)/piechart.o \
 $(OBJDIR)/pikchr.o \

 $(OBJDIR)/pivot.o \
 $(OBJDIR)/popen.o \
 $(OBJDIR)/pqueue.o \
 $(OBJDIR)/printf.o \
 $(OBJDIR)/publish.o \
 $(OBJDIR)/purge.o \
 $(OBJDIR)/rebuild.o \







>







920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
 $(OBJDIR)/merge.o \
 $(OBJDIR)/merge3.o \
 $(OBJDIR)/moderate.o \
 $(OBJDIR)/name.o \
 $(OBJDIR)/path.o \
 $(OBJDIR)/piechart.o \
 $(OBJDIR)/pikchr.o \
 $(OBJDIR)/pikchrshow.o \
 $(OBJDIR)/pivot.o \
 $(OBJDIR)/popen.o \
 $(OBJDIR)/pqueue.o \
 $(OBJDIR)/printf.o \
 $(OBJDIR)/publish.o \
 $(OBJDIR)/purge.o \
 $(OBJDIR)/rebuild.o \
1279
1280
1281
1282
1283
1284
1285

1286
1287
1288
1289
1290
1291
1292
		$(OBJDIR)/merge_.c:$(OBJDIR)/merge.h \
		$(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h \
		$(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h \
		$(OBJDIR)/name_.c:$(OBJDIR)/name.h \
		$(OBJDIR)/path_.c:$(OBJDIR)/path.h \
		$(OBJDIR)/piechart_.c:$(OBJDIR)/piechart.h \
		$(OBJDIR)/pikchr_.c:$(OBJDIR)/pikchr.h \

		$(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h \
		$(OBJDIR)/popen_.c:$(OBJDIR)/popen.h \
		$(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h \
		$(OBJDIR)/printf_.c:$(OBJDIR)/printf.h \
		$(OBJDIR)/publish_.c:$(OBJDIR)/publish.h \
		$(OBJDIR)/purge_.c:$(OBJDIR)/purge.h \
		$(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h \







>







1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
		$(OBJDIR)/merge_.c:$(OBJDIR)/merge.h \
		$(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h \
		$(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h \
		$(OBJDIR)/name_.c:$(OBJDIR)/name.h \
		$(OBJDIR)/path_.c:$(OBJDIR)/path.h \
		$(OBJDIR)/piechart_.c:$(OBJDIR)/piechart.h \
		$(OBJDIR)/pikchr_.c:$(OBJDIR)/pikchr.h \
		$(OBJDIR)/pikchrshow_.c:$(OBJDIR)/pikchrshow.h \
		$(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h \
		$(OBJDIR)/popen_.c:$(OBJDIR)/popen.h \
		$(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h \
		$(OBJDIR)/printf_.c:$(OBJDIR)/printf.h \
		$(OBJDIR)/publish_.c:$(OBJDIR)/publish.h \
		$(OBJDIR)/purge_.c:$(OBJDIR)/purge.h \
		$(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h \
2069
2070
2071
2072
2073
2074
2075








2076
2077
2078
2079
2080
2081
2082
$(OBJDIR)/pikchr_.c:	$(SRCDIR)/pikchr.c $(TRANSLATE)
	$(TRANSLATE) $(SRCDIR)/pikchr.c >$@

$(OBJDIR)/pikchr.o:	$(OBJDIR)/pikchr_.c $(OBJDIR)/pikchr.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pikchr.o -c $(OBJDIR)/pikchr_.c

$(OBJDIR)/pikchr.h:	$(OBJDIR)/headers









$(OBJDIR)/pivot_.c:	$(SRCDIR)/pivot.c $(TRANSLATE)
	$(TRANSLATE) $(SRCDIR)/pivot.c >$@

$(OBJDIR)/pivot.o:	$(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c








>
>
>
>
>
>
>
>







2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
$(OBJDIR)/pikchr_.c:	$(SRCDIR)/pikchr.c $(TRANSLATE)
	$(TRANSLATE) $(SRCDIR)/pikchr.c >$@

$(OBJDIR)/pikchr.o:	$(OBJDIR)/pikchr_.c $(OBJDIR)/pikchr.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pikchr.o -c $(OBJDIR)/pikchr_.c

$(OBJDIR)/pikchr.h:	$(OBJDIR)/headers

$(OBJDIR)/pikchrshow_.c:	$(SRCDIR)/pikchrshow.c $(TRANSLATE)
	$(TRANSLATE) $(SRCDIR)/pikchrshow.c >$@

$(OBJDIR)/pikchrshow.o:	$(OBJDIR)/pikchrshow_.c $(OBJDIR)/pikchrshow.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pikchrshow.o -c $(OBJDIR)/pikchrshow_.c

$(OBJDIR)/pikchrshow.h:	$(OBJDIR)/headers

$(OBJDIR)/pivot_.c:	$(SRCDIR)/pivot.c $(TRANSLATE)
	$(TRANSLATE) $(SRCDIR)/pivot.c >$@

$(OBJDIR)/pivot.o:	$(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
	$(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c

Changes to win/Makefile.msc.

437
438
439
440
441
442
443

444
445
446
447
448
449
450
        "$(OX)\merge_.c" \
        "$(OX)\merge3_.c" \
        "$(OX)\moderate_.c" \
        "$(OX)\name_.c" \
        "$(OX)\path_.c" \
        "$(OX)\piechart_.c" \
        "$(OX)\pikchr_.c" \

        "$(OX)\pivot_.c" \
        "$(OX)\popen_.c" \
        "$(OX)\pqueue_.c" \
        "$(OX)\printf_.c" \
        "$(OX)\publish_.c" \
        "$(OX)\purge_.c" \
        "$(OX)\rebuild_.c" \







>







437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
        "$(OX)\merge_.c" \
        "$(OX)\merge3_.c" \
        "$(OX)\moderate_.c" \
        "$(OX)\name_.c" \
        "$(OX)\path_.c" \
        "$(OX)\piechart_.c" \
        "$(OX)\pikchr_.c" \
        "$(OX)\pikchrshow_.c" \
        "$(OX)\pivot_.c" \
        "$(OX)\popen_.c" \
        "$(OX)\pqueue_.c" \
        "$(OX)\printf_.c" \
        "$(OX)\publish_.c" \
        "$(OX)\purge_.c" \
        "$(OX)\rebuild_.c" \
562
563
564
565
566
567
568

569
570
571
572
573
574
575
        "$(SRCDIR)\fossil.confirmer.js" \
        "$(SRCDIR)\fossil.copybutton.js" \
        "$(SRCDIR)\fossil.dom.js" \
        "$(SRCDIR)\fossil.fetch.js" \
        "$(SRCDIR)\fossil.numbered-lines.js" \
        "$(SRCDIR)\fossil.page.fileedit.js" \
        "$(SRCDIR)\fossil.page.forumpost.js" \

        "$(SRCDIR)\fossil.page.wikiedit-wysiwyg-legacy.js" \
        "$(SRCDIR)\fossil.page.wikiedit.js" \
        "$(SRCDIR)\fossil.popupwidget.js" \
        "$(SRCDIR)\fossil.storage.js" \
        "$(SRCDIR)\fossil.tabs.js" \
        "$(SRCDIR)\graph.js" \
        "$(SRCDIR)\href.js" \







>







563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
        "$(SRCDIR)\fossil.confirmer.js" \
        "$(SRCDIR)\fossil.copybutton.js" \
        "$(SRCDIR)\fossil.dom.js" \
        "$(SRCDIR)\fossil.fetch.js" \
        "$(SRCDIR)\fossil.numbered-lines.js" \
        "$(SRCDIR)\fossil.page.fileedit.js" \
        "$(SRCDIR)\fossil.page.forumpost.js" \
        "$(SRCDIR)\fossil.page.pikchrshow.js" \
        "$(SRCDIR)\fossil.page.wikiedit-wysiwyg-legacy.js" \
        "$(SRCDIR)\fossil.page.wikiedit.js" \
        "$(SRCDIR)\fossil.popupwidget.js" \
        "$(SRCDIR)\fossil.storage.js" \
        "$(SRCDIR)\fossil.tabs.js" \
        "$(SRCDIR)\graph.js" \
        "$(SRCDIR)\href.js" \
691
692
693
694
695
696
697

698
699
700
701
702
703
704
        "$(OX)\merge$O" \
        "$(OX)\merge3$O" \
        "$(OX)\moderate$O" \
        "$(OX)\name$O" \
        "$(OX)\path$O" \
        "$(OX)\piechart$O" \
        "$(OX)\pikchr$O" \

        "$(OX)\pivot$O" \
        "$(OX)\popen$O" \
        "$(OX)\pqueue$O" \
        "$(OX)\printf$O" \
        "$(OX)\publish$O" \
        "$(OX)\purge$O" \
        "$(OX)\rebuild$O" \







>







693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
        "$(OX)\merge$O" \
        "$(OX)\merge3$O" \
        "$(OX)\moderate$O" \
        "$(OX)\name$O" \
        "$(OX)\path$O" \
        "$(OX)\piechart$O" \
        "$(OX)\pikchr$O" \
        "$(OX)\pikchrshow$O" \
        "$(OX)\pivot$O" \
        "$(OX)\popen$O" \
        "$(OX)\pqueue$O" \
        "$(OX)\printf$O" \
        "$(OX)\publish$O" \
        "$(OX)\purge$O" \
        "$(OX)\rebuild$O" \
919
920
921
922
923
924
925

926
927
928
929
930
931
932
	echo "$(OX)\merge.obj" >> $@
	echo "$(OX)\merge3.obj" >> $@
	echo "$(OX)\moderate.obj" >> $@
	echo "$(OX)\name.obj" >> $@
	echo "$(OX)\path.obj" >> $@
	echo "$(OX)\piechart.obj" >> $@
	echo "$(OX)\pikchr.obj" >> $@

	echo "$(OX)\pivot.obj" >> $@
	echo "$(OX)\popen.obj" >> $@
	echo "$(OX)\pqueue.obj" >> $@
	echo "$(OX)\printf.obj" >> $@
	echo "$(OX)\publish.obj" >> $@
	echo "$(OX)\purge.obj" >> $@
	echo "$(OX)\rebuild.obj" >> $@







>







922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
	echo "$(OX)\merge.obj" >> $@
	echo "$(OX)\merge3.obj" >> $@
	echo "$(OX)\moderate.obj" >> $@
	echo "$(OX)\name.obj" >> $@
	echo "$(OX)\path.obj" >> $@
	echo "$(OX)\piechart.obj" >> $@
	echo "$(OX)\pikchr.obj" >> $@
	echo "$(OX)\pikchrshow.obj" >> $@
	echo "$(OX)\pivot.obj" >> $@
	echo "$(OX)\popen.obj" >> $@
	echo "$(OX)\pqueue.obj" >> $@
	echo "$(OX)\printf.obj" >> $@
	echo "$(OX)\publish.obj" >> $@
	echo "$(OX)\purge.obj" >> $@
	echo "$(OX)\rebuild.obj" >> $@
1164
1165
1166
1167
1168
1169
1170

1171
1172
1173
1174
1175
1176
1177
	echo "$(SRCDIR)\fossil.confirmer.js" >> $@
	echo "$(SRCDIR)\fossil.copybutton.js" >> $@
	echo "$(SRCDIR)\fossil.dom.js" >> $@
	echo "$(SRCDIR)\fossil.fetch.js" >> $@
	echo "$(SRCDIR)\fossil.numbered-lines.js" >> $@
	echo "$(SRCDIR)\fossil.page.fileedit.js" >> $@
	echo "$(SRCDIR)\fossil.page.forumpost.js" >> $@

	echo "$(SRCDIR)\fossil.page.wikiedit-wysiwyg-legacy.js" >> $@
	echo "$(SRCDIR)\fossil.page.wikiedit.js" >> $@
	echo "$(SRCDIR)\fossil.popupwidget.js" >> $@
	echo "$(SRCDIR)\fossil.storage.js" >> $@
	echo "$(SRCDIR)\fossil.tabs.js" >> $@
	echo "$(SRCDIR)\graph.js" >> $@
	echo "$(SRCDIR)\href.js" >> $@







>







1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
	echo "$(SRCDIR)\fossil.confirmer.js" >> $@
	echo "$(SRCDIR)\fossil.copybutton.js" >> $@
	echo "$(SRCDIR)\fossil.dom.js" >> $@
	echo "$(SRCDIR)\fossil.fetch.js" >> $@
	echo "$(SRCDIR)\fossil.numbered-lines.js" >> $@
	echo "$(SRCDIR)\fossil.page.fileedit.js" >> $@
	echo "$(SRCDIR)\fossil.page.forumpost.js" >> $@
	echo "$(SRCDIR)\fossil.page.pikchrshow.js" >> $@
	echo "$(SRCDIR)\fossil.page.wikiedit-wysiwyg-legacy.js" >> $@
	echo "$(SRCDIR)\fossil.page.wikiedit.js" >> $@
	echo "$(SRCDIR)\fossil.popupwidget.js" >> $@
	echo "$(SRCDIR)\fossil.storage.js" >> $@
	echo "$(SRCDIR)\fossil.tabs.js" >> $@
	echo "$(SRCDIR)\graph.js" >> $@
	echo "$(SRCDIR)\href.js" >> $@
1746
1747
1748
1749
1750
1751
1752






1753
1754
1755
1756
1757
1758
1759
	"$(OBJDIR)\translate$E" $** > $@

"$(OX)\pikchr$O" : "$(OX)\pikchr_.c" "$(OX)\pikchr.h"
	$(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\pikchr_.c"

"$(OX)\pikchr_.c" : "$(SRCDIR)\pikchr.c"
	"$(OBJDIR)\translate$E" $** > $@







"$(OX)\pivot$O" : "$(OX)\pivot_.c" "$(OX)\pivot.h"
	$(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\pivot_.c"

"$(OX)\pivot_.c" : "$(SRCDIR)\pivot.c"
	"$(OBJDIR)\translate$E" $** > $@








>
>
>
>
>
>







1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
	"$(OBJDIR)\translate$E" $** > $@

"$(OX)\pikchr$O" : "$(OX)\pikchr_.c" "$(OX)\pikchr.h"
	$(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\pikchr_.c"

"$(OX)\pikchr_.c" : "$(SRCDIR)\pikchr.c"
	"$(OBJDIR)\translate$E" $** > $@

"$(OX)\pikchrshow$O" : "$(OX)\pikchrshow_.c" "$(OX)\pikchrshow.h"
	$(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\pikchrshow_.c"

"$(OX)\pikchrshow_.c" : "$(SRCDIR)\pikchrshow.c"
	"$(OBJDIR)\translate$E" $** > $@

"$(OX)\pivot$O" : "$(OX)\pivot_.c" "$(OX)\pivot.h"
	$(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\pivot_.c"

"$(OX)\pivot_.c" : "$(SRCDIR)\pivot.c"
	"$(OBJDIR)\translate$E" $** > $@

2166
2167
2168
2169
2170
2171
2172

2173
2174
2175
2176
2177
2178
2179
			"$(OX)\merge_.c":"$(OX)\merge.h" \
			"$(OX)\merge3_.c":"$(OX)\merge3.h" \
			"$(OX)\moderate_.c":"$(OX)\moderate.h" \
			"$(OX)\name_.c":"$(OX)\name.h" \
			"$(OX)\path_.c":"$(OX)\path.h" \
			"$(OX)\piechart_.c":"$(OX)\piechart.h" \
			"$(OX)\pikchr_.c":"$(OX)\pikchr.h" \

			"$(OX)\pivot_.c":"$(OX)\pivot.h" \
			"$(OX)\popen_.c":"$(OX)\popen.h" \
			"$(OX)\pqueue_.c":"$(OX)\pqueue.h" \
			"$(OX)\printf_.c":"$(OX)\printf.h" \
			"$(OX)\publish_.c":"$(OX)\publish.h" \
			"$(OX)\purge_.c":"$(OX)\purge.h" \
			"$(OX)\rebuild_.c":"$(OX)\rebuild.h" \







>







2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
			"$(OX)\merge_.c":"$(OX)\merge.h" \
			"$(OX)\merge3_.c":"$(OX)\merge3.h" \
			"$(OX)\moderate_.c":"$(OX)\moderate.h" \
			"$(OX)\name_.c":"$(OX)\name.h" \
			"$(OX)\path_.c":"$(OX)\path.h" \
			"$(OX)\piechart_.c":"$(OX)\piechart.h" \
			"$(OX)\pikchr_.c":"$(OX)\pikchr.h" \
			"$(OX)\pikchrshow_.c":"$(OX)\pikchrshow.h" \
			"$(OX)\pivot_.c":"$(OX)\pivot.h" \
			"$(OX)\popen_.c":"$(OX)\popen.h" \
			"$(OX)\pqueue_.c":"$(OX)\pqueue.h" \
			"$(OX)\printf_.c":"$(OX)\printf.h" \
			"$(OX)\publish_.c":"$(OX)\publish.h" \
			"$(OX)\purge_.c":"$(OX)\purge.h" \
			"$(OX)\rebuild_.c":"$(OX)\rebuild.h" \

Deleted www/branch01.svg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="211"
   stroke-miterlimit="10"
   font-weight="normal"
   height="32"
   font-style="normal"
   font-size="12px"
   id="svg2"
   version="1.1"
   inkscape:version="0.91 r13725"
   sodipodi:docname="branch01.svg"
   style="font-style:normal;font-weight:normal;font-size:12px;font-family:Dialog;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto">
  <metadata
     id="metadata61">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="1240"
     inkscape:window-height="1382"
     id="namedview59"
     showgrid="false"
     inkscape:zoom="0.17717718"
     inkscape:cx="106"
     inkscape:cy="15.833008"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg2"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0" />
  <!--Generated by ySVG 2.5-->
  <defs
     id="genericDefs" />
  <g
     id="g5"
     transform="translate(-261.5,-649.83301)">
    <g
       transform="translate(206,1954)"
       id="g7"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="71.5"
         cy="-1288.167"
         id="circle9"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(206,1954)"
       id="g11"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="71.5"
         cy="-1288.167"
         id="circle13"
         style="fill:none" />
      <text
         x="67.7061"
         y="-1283.6318"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text15"
         style="font-family:sans-serif;stroke:none;stroke-width:1">1</text>
    </g>
    <g
       transform="translate(206,1954)"
       id="g17"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="131.5"
         cy="-1288.167"
         id="circle19"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(206,1954)"
       id="g21"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="131.5"
         cy="-1288.167"
         id="circle23"
         style="fill:none" />
      <text
         x="127.7061"
         y="-1283.6318"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text25"
         style="font-family:sans-serif;stroke:none;stroke-width:1">2</text>
    </g>
    <g
       transform="translate(206,1954)"
       id="g27"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="191.5"
         cy="-1288.167"
         id="circle29"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(206,1954)"
       id="g31"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="191.5"
         cy="-1288.167"
         id="circle33"
         style="fill:none" />
      <text
         x="187.7061"
         y="-1283.6318"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text35"
         style="font-family:sans-serif;stroke:none;stroke-width:1">3</text>
    </g>
    <g
       transform="translate(206,1954)"
       id="g37"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="250.5"
         cy="-1288.167"
         id="circle39"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(206,1954)"
       id="g41"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="250.5"
         cy="-1288.167"
         id="circle43"
         style="fill:none" />
      <text
         x="246.7061"
         y="-1283.6318"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text45"
         style="font-family:sans-serif;stroke:none;stroke-width:1">4</text>
      <path
         d="m 86.5,-1288.167 22,0"
         clip-path="url(#clipPath2)"
         id="path47"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 116.5,-1288.167 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path49"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 146.5,-1288.167 22,0"
         clip-path="url(#clipPath2)"
         id="path51"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 176.5,-1288.167 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path53"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 206.5,-1288.167 21,0"
         clip-path="url(#clipPath2)"
         id="path55"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 235.5,-1288.167 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path57"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
    </g>
  </g>
</svg>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<








































































































































































































































































































































































































































































Deleted www/branch02.svg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="152"
   stroke-miterlimit="10"
   font-weight="normal"
   height="121"
   font-style="normal"
   font-size="12px"
   id="svg4677"
   version="1.1"
   inkscape:version="0.91 r13725"
   sodipodi:docname="branch02.svg"
   style="font-style:normal;font-weight:normal;font-size:12px;font-family:Dialog;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto">
  <metadata
     id="metadata4743">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="640"
     inkscape:window-height="480"
     id="namedview4741"
     showgrid="false"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0"
     inkscape:zoom="0.93768769"
     inkscape:cx="76"
     inkscape:cy="60.165985"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg4677" />
  <!--Generated by ySVG 2.5-->
  <defs
     id="genericDefs" />
  <g
     id="g4680"
     transform="translate(-291.5,-605.16599)">
    <defs
       id="defs1">
      <clipPath
         clipPathUnits="userSpaceOnUse"
         id="clipPath1">
        <path
           d="M 0,0 735,0 735,1332 0,1332 0,0 Z"
           id="path4684"
           inkscape:connector-curvature="0" />
      </clipPath>
      <clipPath
         clipPathUnits="userSpaceOnUse"
         id="clipPath2">
        <path
           d="m 47,-1129 735,0 0,1332 -735,0 0,-1332 z"
           id="path4687"
           inkscape:connector-curvature="0" />
      </clipPath>
    </defs>
    <g
       transform="translate(-47,1129)"
       id="g4689"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="354.5"
         cy="-465.83401"
         id="circle4691"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-47,1129)"
       id="g4693"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="354.5"
         cy="-465.83401"
         id="circle4695"
         style="fill:none" />
      <text
         x="350.70609"
         y="-461.2988"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4697"
         style="font-family:sans-serif;stroke:none;stroke-width:1">1</text>
    </g>
    <g
       transform="translate(-47,1129)"
       id="g4699"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="414.5"
         cy="-465.83401"
         id="circle4701"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-47,1129)"
       id="g4703"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="414.5"
         cy="-465.83401"
         id="circle4705"
         style="fill:none" />
      <text
         x="410.70609"
         y="-461.2988"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4707"
         style="font-family:sans-serif;stroke:none;stroke-width:1">2</text>
    </g>
    <g
       transform="translate(-47,1129)"
       id="g4709"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="474.5"
         cy="-507.83401"
         id="circle4711"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-47,1129)"
       id="g4713"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="474.5"
         cy="-507.83401"
         id="circle4715"
         style="fill:none" />
      <text
         x="470.70609"
         y="-503.2988"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4717"
         style="font-family:sans-serif;stroke:none;stroke-width:1">3</text>
    </g>
    <g
       transform="translate(-47,1129)"
       id="g4719"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="473.5"
         cy="-418.83401"
         id="circle4721"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-47,1129)"
       id="g4723"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="473.5"
         cy="-418.83401"
         id="circle4725"
         style="fill:none" />
      <text
         x="469.70609"
         y="-414.2988"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4727"
         style="font-family:sans-serif;stroke:none;stroke-width:1">4</text>
      <path
         d="m 369.5,-465.834 22,0"
         clip-path="url(#clipPath2)"
         id="path4729"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 399.5,-465.834 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path4731"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 426.7885,-474.4359 28.8692,-20.2084"
         clip-path="url(#clipPath2)"
         id="path4733"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 462.2115,-499.2321 -12.6981,2.7854 5.325,2.3758 0.4096,5.8166 z"
         clip-path="url(#clipPath2)"
         id="path4735"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 426.2324,-456.4878 29.2779,23.323"
         clip-path="url(#clipPath2)"
         id="path4737"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 461.7676,-428.1801 -6.2705,-11.3878 -0.769,5.7801 -5.4618,2.0415 z"
         clip-path="url(#clipPath2)"
         id="path4739"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
    </g>
  </g>
</svg>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<














































































































































































































































































































































































































































































































Deleted www/branch03.svg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="211"
   stroke-miterlimit="10"
   font-weight="normal"
   height="121"
   font-style="normal"
   font-size="12px"
   id="svg4877"
   version="1.1"
   inkscape:version="0.91 r13725"
   sodipodi:docname="branch03.svg"
   style="font-style:normal;font-weight:normal;font-size:12px;font-family:Dialog;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto">
  <metadata
     id="metadata4961">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="640"
     inkscape:window-height="480"
     id="namedview4959"
     showgrid="false"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0"
     inkscape:zoom="0.93768769"
     inkscape:cx="105.5"
     inkscape:cy="60.998993"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg4877" />
  <!--Generated by ySVG 2.5-->
  <defs
     id="genericDefs" />
  <g
     id="g4880"
     transform="translate(-262,-605.99899)">
    <defs
       id="defs1">
      <clipPath
         clipPathUnits="userSpaceOnUse"
         id="clipPath1">
        <path
           d="M 0,0 735,0 735,1332 0,1332 0,0 Z"
           id="path4884"
           inkscape:connector-curvature="0" />
      </clipPath>
      <clipPath
         clipPathUnits="userSpaceOnUse"
         id="clipPath2">
        <path
           d="m 46,-911 735,0 0,1332 -735,0 0,-1332 z"
           id="path4887"
           inkscape:connector-curvature="0" />
      </clipPath>
    </defs>
    <g
       transform="translate(-46,911)"
       id="g4889"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="324"
         cy="-247.00101"
         id="circle4891"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-46,911)"
       id="g4893"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="324"
         cy="-247.00101"
         id="circle4895"
         style="fill:none" />
      <text
         x="320.20609"
         y="-242.46581"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4897"
         style="font-family:sans-serif;stroke:none;stroke-width:1">1</text>
    </g>
    <g
       transform="translate(-46,911)"
       id="g4899"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="384"
         cy="-247.00101"
         id="circle4901"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-46,911)"
       id="g4903"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="384"
         cy="-247.00101"
         id="circle4905"
         style="fill:none" />
      <text
         x="380.20609"
         y="-242.46581"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4907"
         style="font-family:sans-serif;stroke:none;stroke-width:1">2</text>
    </g>
    <g
       transform="translate(-46,911)"
       id="g4909"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="444"
         cy="-289.00101"
         id="circle4911"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-46,911)"
       id="g4913"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="444"
         cy="-289.00101"
         id="circle4915"
         style="fill:none" />
      <text
         x="440.20609"
         y="-284.46579"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4917"
         style="font-family:sans-serif;stroke:none;stroke-width:1">3</text>
    </g>
    <g
       transform="translate(-46,911)"
       id="g4919"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="443"
         cy="-200.00101"
         id="circle4921"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-46,911)"
       id="g4923"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="443"
         cy="-200.00101"
         id="circle4925"
         style="fill:none" />
      <text
         x="439.20609"
         y="-195.46581"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4927"
         style="font-family:sans-serif;stroke:none;stroke-width:1">4</text>
    </g>
    <g
       transform="translate(-46,911)"
       id="g4929"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="503"
         cy="-247.00101"
         id="circle4931"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-46,911)"
       id="g4933"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="503"
         cy="-247.00101"
         id="circle4935"
         style="fill:none" />
      <text
         x="499.20609"
         y="-242.46581"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text4937"
         style="font-family:sans-serif;stroke:none;stroke-width:1">5</text>
      <path
         d="m 339,-247.001 22,0"
         clip-path="url(#clipPath2)"
         id="path4939"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 369,-247.001 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path4941"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 396.2885,-255.6029 28.8692,-20.2084"
         clip-path="url(#clipPath2)"
         id="path4943"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 431.7115,-280.399 -12.6981,2.7854 5.325,2.3757 0.4096,5.8166 z"
         clip-path="url(#clipPath2)"
         id="path4945"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 395.7324,-237.6548 29.2779,23.3231"
         clip-path="url(#clipPath2)"
         id="path4947"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 431.2676,-209.3471 -6.2705,-11.3877 -0.7689,5.78 -5.4619,2.0415 z"
         clip-path="url(#clipPath2)"
         id="path4949"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 456.22,-280.302 28.0427,19.9626"
         clip-path="url(#clipPath2)"
         id="path4951"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 490.78,-255.7 -6.8763,-11.0325 -0.4557,5.8132 -5.3436,2.3335 z"
         clip-path="url(#clipPath2)"
         id="path4953"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 454.8084,-209.2509 30.0854,-23.5668"
         clip-path="url(#clipPath2)"
         id="path4955"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1;stroke-dasharray:6, 2" />
      <path
         d="m 491.1916,-237.7511 -12.53,3.4639 5.4449,2.0861 0.7217,5.7861 z"
         clip-path="url(#clipPath2)"
         id="path4957"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1;stroke-dasharray:6, 2" />
    </g>
  </g>
</svg>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<






























































































































































































































































































































































































































































































































































































































Deleted www/branch04.svg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="388"
   stroke-miterlimit="10"
   font-weight="normal"
   height="104.77151"
   font-style="normal"
   font-size="12px"
   id="svg2"
   version="1.1"
   inkscape:version="0.91 r13725"
   sodipodi:docname="branch04.svg"
   style="font-style:normal;font-weight:normal;font-size:12px;font-family:Dialog;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto">
  <metadata
     id="metadata170">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="640"
     inkscape:window-height="480"
     id="namedview168"
     showgrid="false"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0"
     inkscape:zoom="0.17717718"
     inkscape:cx="194"
     inkscape:cy="49.103516"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg2" />
  <!--Generated by ySVG 2.5-->
  <defs
     id="genericDefs" />
  <g
     id="g5"
     transform="translate(-173.5,-610.332)">
    <defs
       id="defs1">
      <clipPath
         clipPathUnits="userSpaceOnUse"
         id="clipPath1">
        <path
           d="M 0,0 735,0 735,1332 0,1332 0,0 Z"
           id="path9"
           inkscape:connector-curvature="0" />
      </clipPath>
      <clipPath
         clipPathUnits="userSpaceOnUse"
         id="clipPath2">
        <path
           d="m 29,-1077 735,0 0,1332 -735,0 0,-1332 z"
           id="path12"
           inkscape:connector-curvature="0" />
      </clipPath>
    </defs>
    <g
       transform="translate(-29,1077)"
       id="g14"
       style="fill:#9accfc;stroke:#9accfc;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <rect
         x="290.6333"
         width="298.8667"
         height="46"
         y="-425.668"
         clip-path="url(#clipPath2)"
         id="rect16"
         style="stroke:none" />
    </g>
    <g
       transform="translate(-29,1077)"
       stroke-miterlimit="1.45"
       id="g18"
       style="fill:#7ca5cc;stroke:#7ca5cc;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <rect
         x="290.6333"
         width="298.8667"
         height="46"
         y="-425.668"
         clip-path="url(#clipPath2)"
         id="rect20"
         style="fill:none" />
      <text
         x="429.177"
         y="-362.06641"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text22"
         style="font-family:sans-serif;fill:#000000;stroke:none">test</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g24"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="218.5"
         cy="-450.668"
         id="circle26"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g28"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="218.5"
         cy="-450.668"
         id="circle30"
         style="fill:none" />
      <text
         x="214.7061"
         y="-446.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text32"
         style="font-family:sans-serif;stroke:none;stroke-width:1">1</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g34"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="278.5"
         cy="-450.668"
         id="circle36"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g38"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="278.5"
         cy="-450.668"
         id="circle40"
         style="fill:none" />
      <text
         x="274.70609"
         y="-446.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text42"
         style="font-family:sans-serif;stroke:none;stroke-width:1">2</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g44"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="338.5"
         cy="-450.668"
         id="circle46"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g48"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="338.5"
         cy="-450.668"
         id="circle50"
         style="fill:none" />
      <text
         x="334.70609"
         y="-446.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text52"
         style="font-family:sans-serif;stroke:none;stroke-width:1">3</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g54"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="337.5"
         cy="-403.668"
         id="circle56"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g58"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="337.5"
         cy="-403.668"
         id="circle60"
         style="fill:none" />
      <text
         x="333.70609"
         y="-399.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text62"
         style="font-family:sans-serif;stroke:none;stroke-width:1">4</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g64"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="397.5"
         cy="-450.668"
         id="circle66"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g68"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="397.5"
         cy="-450.668"
         id="circle70"
         style="fill:none" />
      <text
         x="393.70609"
         y="-446.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text72"
         style="font-family:sans-serif;stroke:none;stroke-width:1">5</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g74"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="456.5"
         cy="-450.668"
         id="circle76"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g78"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="456.5"
         cy="-450.668"
         id="circle80"
         style="fill:none" />
      <text
         x="452.70609"
         y="-446.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text82"
         style="font-family:sans-serif;stroke:none;stroke-width:1">7</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g84"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="515.5"
         cy="-450.668"
         id="circle86"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g88"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="515.5"
         cy="-450.668"
         id="circle90"
         style="fill:none" />
      <text
         x="511.70609"
         y="-446.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text92"
         style="font-family:sans-serif;stroke:none;stroke-width:1">8</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g94"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="574.5"
         cy="-450.668"
         id="circle96"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g98"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="574.5"
         cy="-450.668"
         id="circle100"
         style="fill:none" />
      <text
         x="566.91211"
         y="-446.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text102"
         style="font-family:sans-serif;stroke:none;stroke-width:1">10</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g104"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="427.5"
         cy="-403.668"
         id="circle106"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g108"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="427.5"
         cy="-403.668"
         id="circle110"
         style="fill:none" />
      <text
         x="423.70609"
         y="-399.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text112"
         style="font-family:sans-serif;stroke:none;stroke-width:1">6</text>
    </g>
    <g
       transform="translate(-29,1077)"
       id="g114"
       style="fill:#ffffff;stroke:#ffffff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="545.5"
         cy="-403.668"
         id="circle116"
         style="stroke:none" />
    </g>
    <g
       stroke-miterlimit="1.45"
       transform="translate(-29,1077)"
       id="g118"
       style="stroke-width:2;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
      <circle
         r="15"
         clip-path="url(#clipPath2)"
         cx="545.5"
         cy="-403.668"
         id="circle120"
         style="fill:none" />
      <text
         x="541.70612"
         y="-399.13281"
         clip-path="url(#clipPath2)"
         xml:space="preserve"
         id="text122"
         style="font-family:sans-serif;stroke:none;stroke-width:1">9</text>
      <path
         d="m 233.5,-450.668 22,0"
         clip-path="url(#clipPath2)"
         id="path124"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 263.5,-450.668 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path126"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 293.5,-450.668 22,0"
         clip-path="url(#clipPath2)"
         id="path128"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 323.5,-450.668 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path130"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 290.2324,-441.3218 29.2779,23.3231"
         clip-path="url(#clipPath2)"
         id="path132"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 325.7676,-413.0141 -6.2705,-11.3878 -0.769,5.7801 -5.4618,2.0415 z"
         clip-path="url(#clipPath2)"
         id="path134"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 353.5,-450.668 21,0"
         clip-path="url(#clipPath2)"
         id="path136"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 382.5,-450.668 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path138"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 412.5,-450.668 21,0"
         clip-path="url(#clipPath2)"
         id="path140"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 441.5,-450.668 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path142"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 471.5,-450.668 21,0"
         clip-path="url(#clipPath2)"
         id="path144"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 500.5,-450.668 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path146"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 530.5,-450.668 21,0"
         clip-path="url(#clipPath2)"
         id="path148"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 559.5,-450.668 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path150"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 352.5,-403.668 52,0"
         clip-path="url(#clipPath2)"
         id="path152"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 412.5,-403.668 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path154"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 435.3766,-416.4335 9.0459,-14.6606"
         clip-path="url(#clipPath2)"
         id="path156"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1;stroke-dasharray:6, 2" />
      <path
         d="m 448.6234,-437.9024 -10.5565,7.5869 5.8305,0.0724 2.6799,5.1786 z"
         clip-path="url(#clipPath2)"
         id="path158"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1;stroke-dasharray:6, 2" />
      <path
         d="m 442.5,-403.668 80,0"
         clip-path="url(#clipPath2)"
         id="path160"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1" />
      <path
         d="m 530.5,-403.668 -12,-5 3,5 -3,5 z"
         clip-path="url(#clipPath2)"
         id="path162"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1" />
      <path
         d="m 553.3766,-416.4335 9.0459,-14.6606"
         clip-path="url(#clipPath2)"
         id="path164"
         inkscape:connector-curvature="0"
         style="fill:none;stroke-width:1;stroke-dasharray:6, 2" />
      <path
         d="m 566.6234,-437.9024 -10.5564,7.5868 5.8305,0.0725 2.6798,5.1786 z"
         clip-path="url(#clipPath2)"
         id="path166"
         inkscape:connector-curvature="0"
         style="stroke:none;stroke-width:1;stroke-dasharray:6, 2" />
    </g>
  </g>
</svg>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<


















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Deleted www/branch06.svg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="517" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="501" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto">
  <!--Generated by ySVG 2.5-->
  <defs id="genericDefs"/>
  <g>
    <defs id="defs1">
      <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
        <path d="M0 0 L517 0 L517 501 L0 501 L0 0 Z"/>
      </clipPath>
      <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
        <path d="M-223 -1949 L294 -1949 L294 -1448 L-223 -1448 L-223 -1949 Z"/>
      </clipPath>
      <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
        <path d="M115.2451 -18 L115.2451 499 L-385.7549 499 L-385.7549 -18 L115.2451 -18 Z"/>
      </clipPath>
      <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
        <path d="M226.751 -18 L226.751 499 L-274.249 499 L-274.249 -18 L226.751 -18 Z"/>
      </clipPath>
      <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
        <path d="M342.2891 -18 L342.2891 499 L-158.7109 499 L-158.7109 -18 L342.2891 -18 Z"/>
      </clipPath>
      <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
        <path d="M454.2402 -18 L454.2402 499 L-46.7598 499 L-46.7598 -18 L454.2402 -18 Z"/>
      </clipPath>
    </defs>
    <g fill="rgb(236,245,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="rgb(236,245,255)">
      <path d="M-208 -1933.666 L-208 -1903.666 L279 -1903.666 L279 -1933.666 Z" stroke="none" clip-path="url(#clipPath2)"/>
      <rect x="-208" width="487" height="440" y="-1903.666" clip-path="url(#clipPath2)" stroke="none"/>
      <line clip-path="url(#clipPath2)" fill="rgb(113,146,178)" x1="-184" x2="279" y1="-1903.666" y2="-1903.666" stroke="none"/>
      <rect x="-208" y="-1903.666" clip-path="url(#clipPath2)" fill="rgb(196,215,237)" width="24" height="110" stroke="none"/>
      <rect x="-184" y="-1903.666" clip-path="url(#clipPath2)" fill="rgb(196,215,237)" width="463" height="110" stroke="none"/>
      <rect x="-208" y="-1793.666" clip-path="url(#clipPath2)" fill="rgb(171,200,226)" width="24" height="110" stroke="none"/>
      <rect x="-184" y="-1793.666" clip-path="url(#clipPath2)" fill="rgb(171,200,226)" width="463" height="110" stroke="none"/>
      <rect x="-208" y="-1683.666" clip-path="url(#clipPath2)" fill="rgb(196,215,237)" width="24" height="109" stroke="none"/>
      <rect x="-184" y="-1683.666" clip-path="url(#clipPath2)" fill="rgb(196,215,237)" width="463" height="109" stroke="none"/>
      <rect x="-208" y="-1574.666" clip-path="url(#clipPath2)" fill="rgb(171,200,226)" width="24" height="111" stroke="none"/>
      <rect x="-184" y="-1574.666" clip-path="url(#clipPath2)" fill="rgb(171,200,226)" width="463" height="111" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <rect fill="none" x="-208" width="487" height="470" y="-1933.666" clip-path="url(#clipPath2)"/>
      <rect fill="none" x="-184" width="463" height="440" y="-1903.666" clip-path="url(#clipPath2)"/>
      <rect fill="none" x="-208" width="487" height="110" y="-1903.666" clip-path="url(#clipPath2)"/>
      <rect fill="none" x="-208" width="487" height="110" y="-1793.666" clip-path="url(#clipPath2)"/>
      <rect fill="none" x="-208" width="487" height="109" y="-1683.666" clip-path="url(#clipPath2)"/>
      <rect fill="none" x="-208" width="487" height="111" y="-1574.666" clip-path="url(#clipPath2)"/>
    </g>
    <g font-size="15px" stroke-linecap="butt" transform="matrix(1,0,0,1,223,1949)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
      <text x="-107.6299" xml:space="preserve" y="-1913.1641" clip-path="url(#clipPath2)" stroke="none">Varying User Views of Fossil Repository</text>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,115.2451)" stroke-linecap="butt">
      <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath3)" stroke="none">Alan</text>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,226.751)" stroke-linecap="butt">
      <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath4)" stroke="none">Betty</text>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,342.2891)" stroke-linecap="butt">
      <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath5)" stroke="none">Charlie</text>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(-0,-1,1,-0,18,454.2402)" stroke-linecap="butt">
      <text x="2" xml:space="preserve" y="13.6016" clip-path="url(#clipPath6)" stroke="none">Darlene</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1760.666" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1760.666"/>
      <text x="-160.7939" y="-1756.1309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">1</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-50" cy="-1718.166" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-50" cy="-1718.166"/>
      <text x="-53.7939" y="-1713.6309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">3</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <ellipse rx="32" ry="15" clip-path="url(#clipPath2)" cx="229" cy="-1760.666" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <ellipse rx="32" fill="none" ry="15" clip-path="url(#clipPath2)" cx="229" cy="-1760.666"/>
      <text x="211.3047" y="-1756.1309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">future</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-97" cy="-1760.666" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-97" cy="-1760.666"/>
      <text x="-100.7939" y="-1756.1309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">2</text>
    </g>
    <g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="silver">
      <circle r="15" clip-path="url(#clipPath2)" cx="10" cy="-1718.166" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="10" cy="-1718.166"/>
      <text x="6.2061" y="-1713.6309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">4</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1541.5" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1541.5"/>
      <text x="-160.7939" y="-1536.9648" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">1</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-50" cy="-1499" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-50" cy="-1499"/>
      <text x="-53.7939" y="-1494.4648" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">3</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <ellipse rx="32" ry="15" clip-path="url(#clipPath2)" cx="229" cy="-1541.5" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <ellipse rx="32" fill="none" ry="15" clip-path="url(#clipPath2)" cx="229" cy="-1541.5"/>
      <text x="211.3047" y="-1536.9648" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">future</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-97" cy="-1541.5" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-97" cy="-1541.5"/>
      <text x="-100.7939" y="-1536.9648" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">2</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="10" cy="-1499" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="10" cy="-1499"/>
      <text x="6.2061" y="-1494.4648" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">4</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="70" cy="-1541.5" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="70" cy="-1541.5"/>
      <text x="66.2061" y="-1536.9648" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">5</text>
    </g>
    <g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="silver">
      <circle r="15" clip-path="url(#clipPath2)" cx="130" cy="-1541.5" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="130" cy="-1541.5"/>
      <text x="126.2061" y="-1536.9648" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">6</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1871.666" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1871.666"/>
      <text x="-160.7939" y="-1867.1309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">1</text>
    </g>
    <g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="silver">
      <circle r="15" clip-path="url(#clipPath2)" cx="-50" cy="-1829.166" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-50" cy="-1829.166"/>
      <text x="-53.7939" y="-1824.6309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">3</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <ellipse rx="32" ry="15" clip-path="url(#clipPath2)" cx="229" cy="-1871.666" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <ellipse rx="32" fill="none" ry="15" clip-path="url(#clipPath2)" cx="229" cy="-1871.666"/>
      <text x="211.3047" y="-1867.1309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">future</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-97" cy="-1871.666" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-97" cy="-1871.666"/>
      <text x="-100.7939" y="-1867.1309" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">2</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-97" cy="-1643.333" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-97" cy="-1643.333"/>
      <text x="-100.7939" y="-1638.7979" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">2</text>
    </g>
    <g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="silver">
      <circle r="15" clip-path="url(#clipPath2)" cx="70" cy="-1643.333" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="70" cy="-1643.333"/>
      <text x="66.2061" y="-1638.7979" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">5</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <circle r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1643.333" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <circle fill="none" r="15" clip-path="url(#clipPath2)" cx="-157" cy="-1643.333"/>
      <text x="-160.7939" y="-1638.7979" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">1</text>
    </g>
    <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke="white">
      <ellipse rx="32" ry="15" clip-path="url(#clipPath2)" cx="229" cy="-1643.333" stroke="none"/>
    </g>
    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" stroke-width="2" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,223,1949)" stroke-linecap="butt">
      <ellipse rx="32" fill="none" ry="15" clip-path="url(#clipPath2)" cx="229" cy="-1643.333"/>
      <text x="211.3047" y="-1638.7979" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">future</text>
      <path fill="none" d="M-143.0594 -1755.1289 L-71.3756 -1726.6564" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-63.9406 -1723.7031 L-73.2473 -1732.7798 L-72.3049 -1727.0255 L-76.9388 -1723.4861 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-142 -1760.666 L-120 -1760.666" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-112 -1760.666 L-124 -1765.666 L-121 -1760.666 L-124 -1755.666 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-82 -1760.666 L189 -1760.666" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M197 -1760.666 L185 -1765.666 L188 -1760.666 L185 -1755.666 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-35 -1718.166 L-13 -1718.166" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-5 -1718.166 L-17 -1723.166 L-14 -1718.166 L-17 -1713.166 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-143.0594 -1535.9629 L-71.3756 -1507.4904" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-63.9406 -1504.5371 L-73.2473 -1513.6138 L-72.3049 -1507.8595 L-76.9388 -1504.3201 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-142 -1541.5 L-120 -1541.5" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-112 -1541.5 L-124 -1546.5 L-121 -1541.5 L-124 -1536.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-35 -1499 L-13 -1499" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-5 -1499 L-17 -1504 L-14 -1499 L-17 -1494 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-82 -1541.5 L47 -1541.5" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M55 -1541.5 L43 -1546.5 L46 -1541.5 L43 -1536.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M85 -1541.5 L107 -1541.5" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M115 -1541.5 L103 -1546.5 L106 -1541.5 L103 -1536.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M145 -1541.5 L189 -1541.5" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M197 -1541.5 L185 -1546.5 L188 -1541.5 L185 -1536.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-143.0594 -1866.1289 L-71.3756 -1837.6564" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-63.9406 -1834.7031 L-73.2473 -1843.7798 L-72.3049 -1838.0255 L-76.9388 -1834.4861 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <text x="-151.3547" y="-1842.3409" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">fork!</text>
      <path fill="none" d="M-142 -1871.666 L-120 -1871.666" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-112 -1871.666 L-124 -1876.666 L-121 -1871.666 L-124 -1866.666 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-82 -1871.666 L189 -1871.666" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M197 -1871.666 L185 -1876.666 L188 -1871.666 L185 -1866.666 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M-82 -1643.333 L47 -1643.333" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M55 -1643.333 L43 -1648.333 L46 -1643.333 L43 -1638.333 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <text x="-47.8594" y="-1651.8643" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">goes offline</text>
      <path fill="none" d="M-142 -1643.333 L-120 -1643.333" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M-112 -1643.333 L-124 -1648.333 L-121 -1643.333 L-124 -1638.333 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <path fill="none" d="M85 -1643.333 L189 -1643.333" stroke-width="1" clip-path="url(#clipPath2)"/>
      <path d="M197 -1643.333 L185 -1648.333 L188 -1643.333 L185 -1638.333 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
      <text x="105.5889" y="-1627.7314" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">back online,</text>
      <text x="112.7256" y="-1613.5986" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">pushes 5,</text>
      <text x="109.5059" y="-1599.4658" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-width="1" xml:space="preserve">pulls 3 &amp; 4</text>
    </g>
  </g>
</svg>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<






























































































































































































































































































































































































































































































Changes to www/branching.wiki.

1
2
3
4
5
6
7
8



9





10
11
12
13
14
15
16
<title>Branching, Forking, Merging, and Tagging</title>
<h2>Background</h2>

In a simple and perfect world, the development of a project would proceed
linearly, as shown in Figure 1.

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">



<img src="branch01.svg"><br>





Figure 1
</td></tr></table>

Each circle represents a check-in.  For the sake of clarity, the check-ins
are given small consecutive numbers.  In a real system, of course, the
check-in numbers would be long hexadecimal hashes since it is not possible
to allocate collision-free sequential numbers in a distributed system.








>
>
>
|
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<title>Branching, Forking, Merging, and Tagging</title>
<h2>Background</h2>

In a simple and perfect world, the development of a project would proceed
linearly, as shown in Figure 1.

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">
<verbatim type="pikchr center">
circle rad 40% thickness 1.5px "1"
arrow right 40%
circle same "2"
arrow same
circle same "3"
arrow same
circle same "4"
</verbatim>
Figure 1
</td></tr></table>

Each circle represents a check-in.  For the sake of clarity, the check-ins
are given small consecutive numbers.  In a real system, of course, the
check-in numbers would be long hexadecimal hashes since it is not possible
to allocate collision-free sequential numbers in a distributed system.
37
38
39
40
41
42
43



44





45
46
47
48
49
50
51

Alas, reality often interferes with the simple linear development of a
project.  Suppose two programmers make independent modifications to check-in 2.
After both changes are committed, the check-in graph looks like Figure 2:

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">



<img src="branch02.svg"><br>





Figure 2
</td></tr></table>

The graph in Figure 2 has two leaves: check-ins 3 and 4.  Check-in 2 has
two children, check-ins 3 and 4.  We call this state a <i>fork</i>.

Fossil tries to prevent forks, primarily through its







>
>
>
|
>
>
>
>
>







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

Alas, reality often interferes with the simple linear development of a
project.  Suppose two programmers make independent modifications to check-in 2.
After both changes are committed, the check-in graph looks like Figure 2:

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">
<verbatim type="pikchr center">
circle rad 40% thickness 1.5px "1"
arrow right 40%
circle same "2"
circle same "3" at 2nd circle+(.4,.3)
arrow from 2nd circle to 3rd circle chop
circle same "4" at 2nd circle+(.4,-.3)
arrow from 2nd circle to 4th circle chop
</verbatim>
Figure 2
</td></tr></table>

The graph in Figure 2 has two leaves: check-ins 3 and 4.  Check-in 2 has
two children, check-ins 3 and 4.  We call this state a <i>fork</i>.

Fossil tries to prevent forks, primarily through its
107
108
109
110
111
112
113
114



115








116
117
118
119
120
121
122
merge]</b> command to merge Bob's changes into her local copy of
check-in 3. Without arguments, that command merges all leaves on the
current branch. Alice can then verify that the merge is sensible and if
so, commit the results as check-in 5.  This results in a DAG as shown in
Figure 3.

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">



<img src="branch03.svg"><br>








Figure 3
</td></tr></table>

Check-in 5 is a child of check-in 3 because it was created by editing
check-in 3, but since check-in 5 also inherits the changes from check-in 4 by
virtue of the merge, we say that check-in 5 is a <i>merge child</i>
of check-in 4 and that it is a <i>direct child</i> of check-in 3.







|
>
>
>
|
>
>
>
>
>
>
>
>







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
merge]</b> command to merge Bob's changes into her local copy of
check-in 3. Without arguments, that command merges all leaves on the
current branch. Alice can then verify that the merge is sensible and if
so, commit the results as check-in 5.  This results in a DAG as shown in
Figure 3.

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="cent">
<verbatim type="pikchr">
circle rad 40% thickness 1.5px "1"
arrow right 40%
circle same "2"
circle same "3" at 2nd circle+(.4,.3)
arrow from 2nd circle to 3rd circle chop
circle same "4" at 2nd circle+(.4,-.3)
arrow from 2nd circle to 4th circle chop
circle same "5" at 3rd circle+(.4,-.3)
arrow from 3rd circle to 5th circle chop
arrow dashed .03 from 4th circle to 5th circle chop
</verbatim>
Figure 3
</td></tr></table>

Check-in 5 is a child of check-in 3 because it was created by editing
check-in 3, but since check-in 5 also inherits the changes from check-in 4 by
virtue of the merge, we say that check-in 5 is a <i>merge child</i>
of check-in 4 and that it is a <i>direct child</i> of check-in 3.
163
164
165
166
167
168
169




170






















171
172
173
174
175
176
177
instead of <i>forking</i>:

Figure 4 shows an example of a project where there are two branches, one
for development work and another for testing.

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">




<img src="branch04.svg"><br>






















Figure 4
</td></tr></table>

Figure 4 diagrams the following scenario: the project starts and
progresses to a point where (at check-in 2)
it is ready to enter testing for its first release.
In a real project, of course, there might be hundreds or thousands of







>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
instead of <i>forking</i>:

Figure 4 shows an example of a project where there are two branches, one
for development work and another for testing.

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">
<verbatim type="pikchr">
circle rad 40% thickness 1.5px fill white "1"
arrow 40%
C2: circle same "2"
arrow same
circle same "3"
arrow same
C5: circle same "5"
arrow same
C7: circle same "7"
arrow same
C8: circle same "8"
arrow same
C10: circle same "10"
C4: circle same at 3rd circle-(0,.35) "4"
C6: circle same at (1/2 way between C5 and C7,C4) "6"
C9: circle same at (1/2 way between C8 and C10,C4) "9"
arrow from C2 to C4 chop
arrow from C4 to C6 chop
arrow from C6 to C9 chop
arrow dashed 0.03 from C6 to C7 chop
arrow same from C9 to C10
layer = 0
box fill 0x9bcdfc color 0x9bcdfc wid (C10.e.x - C2.w.x) ht C6.height*1.5 at C6.c
text " test" above ljust at last box.sw
</verbatim>
<p>
Figure 4
</td></tr></table>

Figure 4 diagrams the following scenario: the project starts and
progresses to a point where (at check-in 2)
it is ready to enter testing for its first release.
In a real project, of course, there might be hundreds or thousands of
421
422
423
424
425
426
427


428































































429
430
431
432
433
434
435
[#dist-clone|Above], we stated that forks carry a risk that development
effort on a branch can be divided among the forks. It might not be
immediately obvious why this is so. To see it, consider this swim lane
diagram:

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">


<img src="branch06.svg"><br>































































Figure 6
</td></tr></table>

This is a happy, cooperating team. That is an important restriction on
our example, because you must understand that this sort of problem can
arise without any malice, selfishness, or willful ignorance in sight.
All users on this diagram start out with the same view of the







>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
[#dist-clone|Above], we stated that forks carry a risk that development
effort on a branch can be divided among the forks. It might not be
immediately obvious why this is so. To see it, consider this swim lane
diagram:

<table border=1 cellpadding=10 hspace=10 vspace=10 align="center">
<tr><td align="center">
<verbatim type="pikchr">
    $laneh = 0.75

    # Draw the lanes
    down
    box width 3.5in height $laneh fill 0xacc9e3
    box same fill 0xc5d8ef
    box same as first box
    box same as 2nd box
    line from 1st box.sw+(0.2,0) up until even with 1st box.n \
      "Alan" above aligned
    line from 2nd box.sw+(0.2,0) up until even with 2nd box.n \
      "Betty" above aligned
    line from 3rd box.sw+(0.2,0) up until even with 3rd box.n \
      "Charlie" above aligned
    line from 4th box.sw+(0.2,0) up until even with 4th box.n \
       "Darlene" above aligned

    # fill in content for the Alice lane
    right
A1: circle rad 0.1in at end of first line + (0.2,-0.2) \
       fill white thickness 1.5px "1" 
    arrow right 50%
    circle same "2"
    arrow right until even with first box.e - (0.65,0.0)
    ellipse "future" fit fill white height 0.2 width 0.5 thickness 1.5px
A3: circle same at A1+(0.8,-0.3) "3" fill 0xc0c0c0
    arrow from A1 to last circle chop "fork!" below aligned

    # content for the Betty lane
B1: circle same as A1 at A1-(0,$laneh) "1"
    arrow right 50%
    circle same "2"
    arrow right until even with first ellipse.w
    ellipse same "future"
B3: circle same at A3-(0,$laneh) "3"
    arrow right 50%
    circle same as A3 "4"
    arrow from B1 to 2nd last circle chop

    # content for the Charlie lane
C1: circle same as A1 at B1-(0,$laneh) "1"
    arrow 50%
    circle same "2"
    arrow right 0.8in "goes" "offline"
C5: circle same as A3 "5"
    arrow right until even with first ellipse.w
    ellipse same "future"
    text "back online" "pushes 5" "pulls 3 &amp; 4" with .n at last arrow

    # content for the Darlene lane
D1: circle same as A1 at C1-(0,$laneh) "1"
    arrow 50%
    circle same "2"
    arrow right until even with C5.w
    circle same "5"
    arrow 50%
    circle same as A3 "6"
    arrow right until even with first ellipse.w
    ellipse same "future"
D3: circle same as B3 at B3-(0,2*$laneh) "3"
    arrow 50%
    circle same "4"
    arrow from D1 to D3 chop
</verbatim>
<br>
Figure 6
</td></tr></table>

This is a happy, cooperating team. That is an important restriction on
our example, because you must understand that this sort of problem can
arise without any malice, selfishness, or willful ignorance in sight.
All users on this diagram start out with the same view of the