code-painter 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. code_painter-1.0.0.dist-info/METADATA +89 -0
  2. code_painter-1.0.0.dist-info/RECORD +271 -0
  3. code_painter-1.0.0.dist-info/WHEEL +4 -0
  4. code_painter-1.0.0.dist-info/licenses/LICENSE +8 -0
  5. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264/__init__.py +0 -0
  6. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/254/342/226/221/321/207/320/240/320/226/__init__.py +0 -0
  7. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/254/342/226/221/321/207/320/240/320/226//321/204/342/225/225/320/246/321/207/320/245/320/234/321/205/320/254/342/226/221/321/205/320/253/342/225/233.py +63 -0
  8. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/254/342/226/221/321/207/320/240/320/226//321/204/342/225/225/320/275/321/205/320/253/342/225/234/321/205/320/254/342/226/221/321/205/320/253/342/225/233.py +72 -0
  9. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/254/342/226/221/321/207/320/240/320/226//321/211/320/273/320/250/321/206/342/225/225/320/225/321/204/342/225/225/320/246/321/207/320/245/320/234/321/205/320/254/342/226/221/321/205/320/253/342/225/233.py +177 -0
  10. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237/__init__.py +0 -0
  11. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/204/342/225/225/320/232/321/210/320/261/320/263/321/205/342/226/222/320/245/321/207/320/264/342/225/221.py +57 -0
  12. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/205/320/230/342/225/242/321/204/342/225/234/320/254.py +71 -0
  13. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/205/320/237/320/241/321/205/320/256/320/233/321/205/342/226/222/320/245/321/207/320/264/342/225/221.py +54 -0
  14. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/205/320/237/320/241/321/210/320/231/342/226/223/321/205/342/226/222/320/245/321/207/320/264/342/225/221.py +68 -0
  15. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/205/342/225/225/342/225/234/321/205/320/275/320/240/321/205/342/226/222/320/245/321/207/320/264/342/225/221.py +55 -0
  16. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/207/320/254/342/225/235/321/207/320/255/320/253/321/205/342/226/222/320/245/321/207/320/264/342/225/221.py +58 -0
  17. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/207/320/254/342/225/235/321/211/320/245/320/254/321/205/342/226/222/320/245/321/207/320/264/342/225/221.py +64 -0
  18. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/210/320/223/320/261/321/211/320/261/342/225/227/321/205/342/226/222/320/245/321/207/320/264/342/225/221.py +39 -0
  19. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/275/320/266/321/204/342/225/243/320/260/__init__.py +0 -0
  20. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/275/320/266/321/204/342/225/243/320/260//321/204/342/225/234/320/254/321/206/320/246/320/227/321/207/342/225/221/342/225/225/321/206/320/231/320/243/321/205/320/235/342/226/221/321/206/320/270/320/261/321/206/320/255/342/224/220/321/205/320/230/342/225/242/321/204/342/225/234/320/254.py +25 -0
  21. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/275/320/266/321/204/342/225/243/320/260//321/205/320/237/320/264/321/206/320/246/320/227/321/204/342/225/243/320/266/321/206/342/224/202/320/245/321/205/320/275/320/247/321/205/320/225/342/225/225.py +414 -0
  22. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/275/320/266/321/204/342/225/243/320/260//321/207/320/244/342/226/221/321/205/320/275/320/247/321/206/320/260/342/225/235_/321/206/320/277/320/253/321/207/320/274/320/244/321/205/320/275/320/247/321/205/342/225/225/320/246.py +42 -0
  23. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/275/320/266/321/204/342/225/243/320/260//321/207/320/244/342/226/221/321/205/320/275/320/247/321/206/320/260/342/225/235_/321/211/320/242/320/262/321/207/320/274/320/244/321/205/320/275/320/247/321/205/342/225/225/320/246.py +40 -0
  24. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/275/320/266/321/204/342/225/243/320/260//321/207/320/273/320/246/321/206/320/236/320/242/321/204/342/225/243/320/266/321/206/342/224/202/320/245_/321/205/342/225/221/320/226/321/204/342/225/234/320/251/321/205/342/225/243/342/224/244/321/207/320/262/320/241/321/206/320/246/320/227.py +38 -0
  25. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/320/275/320/266/321/204/342/225/243/320/260//321/210/320/233/342/226/222/321/210/320/277/320/275/321/207/342/225/221/342/225/225/321/206/320/231/320/243/321/205/320/235/342/226/221/321/206/320/270/320/261/321/206/320/255/342/224/220/321/205/320/230/342/225/242/321/204/342/225/234/320/254.py +25 -0
  26. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/342/225/226/320/265/321/204/342/225/234/320/254/__init__.py +0 -0
  27. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/205/342/225/226/320/265/321/204/342/225/234/320/254//321/205/320/254/320/226/321/205/342/225/234/320/262/321/205/320/235/342/226/221/321/207/320/273/320/260.py +22 -0
  28. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/205/342/225/226/320/265/__init__.py +0 -0
  29. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/205/342/225/226/320/265//321/204/342/225/225/320/275/321/205/320/253/342/225/234/321/205/320/254/342/226/221/321/205/320/253/342/225/233/321/206/320/233/342/225/235/321/205/320/253/342/225/233.py +17 -0
  30. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/205/342/225/226/320/265//321/205/320/225/320/275/321/211/320/255/320/262/321/204/342/225/234/320/243/321/205/342/226/222/320/245/321/205/342/225/235/320/220/321/205/320/253/342/225/233.py +59 -0
  31. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/205/342/225/226/320/265//321/205/320/235/320/221/321/204/342/225/221/320/234/321/211/320/255/320/262/321/204/342/225/234/320/243/321/205/342/226/222/320/245/321/205/342/225/235/320/220/321/205/320/253/342/225/233.py +66 -0
  32. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/205/342/225/226/320/265//321/205/320/253/320/253/321/211/320/255/320/262/321/204/342/225/234/320/243/321/205/342/226/222/320/245/321/205/342/225/235/320/220/321/205/320/253/342/225/233.py +56 -0
  33. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/205/342/225/226/320/265//321/205/320/253/342/225/234/321/206/320/247/320/247/321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/205/342/226/222/320/245/321/205/342/225/235/320/220/321/205/320/253/342/225/233.py +216 -0
  34. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/205/342/225/226/320/265//321/205/342/225/234/320/271/321/210/320/231/342/226/223/321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/205/342/226/222/320/245/321/205/342/225/235/320/220/321/205/320/253/342/225/233.py +216 -0
  35. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/205/342/225/226/320/265//321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/205/342/226/222/320/245/321/205/342/225/235/320/220/321/205/320/253/342/225/233.py +252 -0
  36. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221/__init__.py +0 -0
  37. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/204/342/225/221/320/244/321/206/320/250/320/257/321/207/342/225/221/320/262/321/206/320/247/320/247/321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +52 -0
  38. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/204/342/225/225/320/231/321/205/320/275/320/247/321/207/342/225/227/320/237/321/205/320/223/320/237/321/207/342/224/244/320/260/321/210/320/231/342/225/221/321/206/320/254/320/277/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +32 -0
  39. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/204/342/225/225/320/254/321/211/320/263/320/236/321/207/342/225/221/320/262/321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +39 -0
  40. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/204/342/225/225/320/275/321/207/320/267/320/233/321/205/320/264/320/272/321/206/320/256/320/221/321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +97 -0
  41. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/205/320/264/320/272/321/206/320/256/320/221/321/205/320/253/342/225/233/321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +54 -0
  42. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/205/320/277/320/226/321/205/342/225/221/320/266/321/205/320/223/320/237/321/207/342/224/244/320/260/321/206/320/236/320/267/321/205/320/230/342/225/242/321/206/320/250/320/236/321/206/320/252/320/247/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +51 -0
  43. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/205/342/225/233/320/276/321/204/342/224/220/320/261/321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263.py +54 -0
  44. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/210/320/223/320/234/321/206/320/251/320/277/321/206/320/246/320/227/321/205/320/275/320/247/321/205/320/223/320/237/321/207/342/224/244/320/260/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +23 -0
  45. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/223/320/237/321/207/342/224/244/320/260/321/207/320/244/342/225/227/321/210/320/231/342/225/221/321/206/320/254/320/277/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +29 -0
  46. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/227/320/260/321/204/342/225/234/320/245/321/205/320/253/342/225/233/321/205/342/225/234/320/262/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +26 -0
  47. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/232/320/270/321/206/342/225/235/320/273/321/204/342/225/225/342/225/227/321/211/320/262/320/250/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +19 -0
  48. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/267/320/243/321/206/342/226/221/320/237/321/204/342/225/225/342/225/227/321/211/320/262/320/250/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +20 -0
  49. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/277/320/226/321/205/342/225/221/320/266/321/206/320/246/320/227/321/205/320/275/320/247/321/205/320/223/320/237/321/207/342/224/244/320/260/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +31 -0
  50. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/204/342/225/225/320/231/321/205/320/275/320/247/321/207/342/225/227/320/237/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +25 -0
  51. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/205/320/253/342/225/233/321/206/320/260/320/227/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +23 -0
  52. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/205/320/254/320/226/321/205/320/241/320/270/321/207/320/236/320/227/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +125 -0
  53. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/210/320/223/320/234/321/206/320/251/320/277/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +20 -0
  54. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/210/320/223/320/234/321/206/320/251/320/277/321/206/342/226/221/342/224/244/321/207/320/237/320/260/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +20 -0
  55. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/206/342/226/221/342/224/244/321/206/342/225/227/342/224/244/321/204/342/225/225/342/225/227/321/211/320/262/320/250/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +25 -0
  56. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/207/320/221/342/226/221/321/207/342/225/221/342/224/220/321/206/320/255/320/261/321/207/320/276/320/220/321/207/342/225/221/320/266/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +26 -0
  57. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/207/320/244/342/225/241/321/210/320/267/320/226/321/204/342/224/220/320/261/321/205/320/237/342/225/226/321/206/342/225/241/320/233/321/210/320/277/320/245/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +40 -0
  58. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/207/342/225/221/320/262/321/205/320/262/320/251/321/206/320/220/320/220/321/206/320/247/320/267/321/207/342/225/227/320/237/321/205/320/225/342/225/225.py +72 -0
  59. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/231/320/233/321/206/320/254/342/225/221//321/211/320/254/320/243/321/210/320/251/342/225/243/321/207/320/221/320/277/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +29 -0
  60. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/245/342/226/221/321/205/320/275/320/266/321/204/342/225/243/320/233/321/207/342/225/233/320/236/__init__.py +0 -0
  61. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/245/342/226/221/321/205/320/275/320/266/321/204/342/225/243/320/233/321/207/342/225/233/320/236//321/206/320/231/320/227/321/211/320/255/320/262/321/206/320/262/320/266/321/205/342/225/243/342/225/227/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/225/226/342/226/222/321/206/342/225/225/320/232.py +45 -0
  62. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/245/342/226/221/321/205/320/275/320/266/321/204/342/225/243/320/233/321/207/342/225/233/320/236//321/206/320/264/320/275/321/205/320/254/320/226/321/206/320/262/320/266/321/205/342/225/243/342/225/227/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/225/226/342/226/222/321/206/342/225/225/320/232.py +37 -0
  63. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/245/342/226/221/321/205/320/275/320/266/321/204/342/225/243/320/233/321/207/342/225/233/320/236//321/206/320/264/320/275/321/205/320/254/320/226/321/206/320/262/320/266/321/205/342/225/243/342/225/227/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/225/235/320/271/321/206/342/225/242/320/261.py +36 -0
  64. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/245/342/226/221/321/205/320/275/320/266/321/204/342/225/243/320/233/321/207/342/225/233/320/236//321/206/320/275/320/263/321/206/320/246/342/225/243/321/205/342/225/234/320/262/321/211/342/225/227/320/224/321/211/320/227/320/241/321/205/320/230/320/226/321/205/320/231/342/226/223.py +67 -0
  65. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/245/342/226/221/321/205/320/275/320/266/321/204/342/225/243/320/233/321/207/342/225/233/320/236//321/207/320/230/342/226/222/321/205/342/224/220/320/223/321/206/320/262/320/266/321/205/342/225/243/342/225/227/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/225/235/320/271/321/206/342/225/242/320/261.py +36 -0
  66. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/245/342/226/221/321/205/320/275/320/266/321/204/342/225/243/320/233/321/207/342/225/233/320/236//321/207/320/257/320/271/321/205/342/225/234/320/262/321/206/320/262/320/266/321/205/342/225/243/342/225/227/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/225/226/342/226/222/321/206/342/225/225/320/232.py +34 -0
  67. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/320/245/342/226/221/321/205/320/275/320/266/321/204/342/225/243/320/233/321/207/342/225/233/320/236//321/207/320/257/320/271/321/205/342/225/234/320/262/321/206/320/262/320/266/321/205/342/225/243/342/225/227/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/225/235/320/271/321/206/342/225/242/320/261.py +36 -0
  68. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/342/225/241/320/233/321/210/320/277/320/245//321/206/320/231/320/243/321/205/320/235/342/226/221/321/206/342/224/202/320/270/321/210/320/267/320/263/321/205/342/226/222/320/222.py +95 -0
  69. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/206/342/225/241/320/233/321/210/320/277/320/245//321/206/342/225/241/320/233/321/210/320/277/320/245/321/207/342/225/227/320/224/321/205/320/240/320/230.py +30 -0
  70. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240/__init__.py +0 -0
  71. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/204/342/225/221/320/244/321/205/320/275/320/240/321/206/320/263/320/233/321/206/320/263/320/233/321/210/342/226/221/342/226/222/1.json +11 -0
  72. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/204/342/225/225/320/275/321/205/320/253/342/225/234/321/205/320/254/342/226/221/321/205/320/253/342/225/233/321/206/320/233/342/225/235/321/205/320/253/342/225/233.py +17 -0
  73. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/204/342/225/225/320/275/321/205/320/253/342/225/234/321/210/342/226/222/320/261/321/206/320/263/320/233.py +21 -0
  74. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/206/320/247/320/265/321/205/320/236/320/226/321/205/320/230/342/225/242/321/204/342/225/234/320/254.py +21 -0
  75. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/211/320/252/320/237/321/210/342/225/221/320/273/321/204/342/225/221/320/244/321/205/320/275/320/240/321/206/320/263/320/233.py +58 -0
  76. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/342/225/227/320/250/321/207/320/244/342/225/227/__init__.py +0 -0
  77. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/204/342/225/225/320/231/321/205/320/236/320/257/321/210/320/231/342/226/223/321/207/342/225/227/320/250/321/205/320/253/342/225/233.py +19 -0
  78. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/205/320/220/320/242/321/205/342/225/234/342/226/222/321/206/320/245/320/230/321/206/320/256/320/254.py +21 -0
  79. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/205/320/240/320/224/321/205/320/253/342/225/234/321/205/320/253/342/225/234/321/206/320/247/320/247.py +102 -0
  80. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/206/320/270/320/261/321/206/320/255/342/224/220/321/210/342/225/242/320/225/321/207/342/225/221/320/267/321/207/320/236/320/253/321/204/342/225/225/342/225/234.py +21 -0
  81. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/207/320/273/320/233/321/204/342/225/234/320/243/321/206/320/245/320/230/321/206/320/256/320/254/321/207/320/240/320/223.py +54 -0
  82. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/210/320/277/320/224/321/205/320/230/320/226/321/210/320/261/320/270/321/206/320/223/320/225/321/205/320/234/320/225.py +13 -0
  83. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/210/342/225/242/320/225/321/207/342/225/221/320/267/321/207/320/236/320/253/321/204/342/225/225/342/225/234.py +539 -0
  84. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/211/320/257/342/224/202/321/204/342/225/243/320/240/__init__.py +0 -0
  85. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/211/320/257/342/224/202/321/204/342/225/243/320/240//321/204/342/225/221/320/244/321/207/342/225/221/342/224/220/321/210/342/226/221/342/226/222_/321/204/342/225/234/320/236/321/211/320/257/342/224/202/321/210/342/226/221/342/226/222/321/210/320/261/320/270.py +48 -0
  86. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/211/320/257/342/224/202/321/204/342/225/243/320/240//321/204/342/225/221/320/244/321/207/342/225/221/342/224/220/321/210/342/226/221/342/226/222_/321/205/320/264/320/267/321/210/342/226/221/342/226/222/321/210/320/261/320/270.py +48 -0
  87. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/206/342/225/221/320/240/321/205/320/230/320/253/321/205/320/276/320/264//321/211/320/257/342/224/202/321/204/342/225/243/320/240//321/204/342/225/221/320/244/321/207/342/225/221/342/224/220/321/210/342/226/221/342/226/222_/321/211/320/273/320/250/321/211/320/257/342/224/202/321/210/342/226/221/342/226/222/321/210/320/261/320/270.py +48 -0
  88. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243/__init__.py +0 -0
  89. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243/_/321/210/320/277/342/224/244/321/206/320/250/320/236.txt +5 -0
  90. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/204/342/225/221/320/226/321/210/320/267/320/263/321/206/320/253/342/224/244/321/205/320/264/320/252/321/205/320/232/320/257/321/210/320/223/342/225/234.py +272 -0
  91. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/225/342/226/222/321/207/320/244/320/270/__init__.py +0 -0
  92. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/225/342/226/222/321/207/320/244/320/270//321/205/320/253/342/225/234/321/205/320/276/342/225/242/321/207/320/276/320/220/321/207/320/260/320/221.py +261 -0
  93. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/225/342/226/222/321/207/320/244/320/270//321/210/320/277/320/247/321/207/342/225/227/320/237/321/211/320/253/320/226.py +114 -0
  94. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/230/320/255/321/205/320/275/320/266/321/206/320/270/320/261/321/206/320/255/342/224/220.py +51 -0
  95. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/254/342/226/221/321/207/320/240/320/226/__init__.py +0 -0
  96. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/254/342/226/221/321/207/320/240/320/226//321/204/342/225/225/320/246/321/207/320/245/320/234/321/205/320/254/342/226/221/321/205/320/253/342/225/233/321/206/320/245/342/226/221/321/206/320/235/320/276.py +112312 -0
  97. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/254/342/226/221/321/207/320/240/320/226//321/204/342/225/225/320/275/321/205/320/253/342/225/234/321/205/320/254/342/226/221/321/205/320/253/342/225/233/321/206/320/245/342/226/221/321/206/320/235/320/276.py +23337 -0
  98. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/254/342/226/221/321/207/320/240/320/226//321/205/320/254/342/226/221/321/205/320/253/342/225/233/321/206/320/245/342/226/221/321/206/320/235/320/276.py +25 -0
  99. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/254/342/226/221/321/207/320/240/320/226//321/205/320/254/342/226/221/321/205/320/253/342/225/233/321/206/320/245/342/226/221/321/206/320/235/320/276/321/205/320/264/320/224/321/207/320/240/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226.py +194 -0
  100. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/254/342/226/221/321/207/320/240/320/226//321/205/320/254/342/226/221/321/205/320/253/342/225/233/321/207/342/225/227/320/250/321/205/320/253/342/225/233/321/206/320/255/342/224/220.py +77 -0
  101. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237/__init__.py +0 -0
  102. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/204/342/225/225/320/232/321/210/342/225/221/320/273/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +29 -0
  103. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/225/320/223/321/207/342/224/244/320/260/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +78 -0
  104. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/240/320/236/321/205/320/237/320/241/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +30 -0
  105. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/250/342/224/244/321/205/342/225/226/342/224/244/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +24 -0
  106. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/205/320/225/320/223/321/207/342/224/244/320/260.py +728 -0
  107. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/205/320/264/320/224/321/207/320/240/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226.py +287 -0
  108. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/205/320/276/320/252/321/204/342/225/243/320/231.py +371 -0
  109. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/206/320/270/320/261/321/206/320/255/342/224/220/321/205/342/225/226/320/265/321/205/320/225/342/225/226.py +321 -0
  110. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/206/320/270/320/261/321/206/320/255/342/224/220/321/207/320/244/320/257/321/206/320/230/320/240/321/205/320/251/320/270.py +340 -0
  111. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +334 -0
  112. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/207/342/225/227/320/250/321/205/320/253/342/225/233/321/206/320/255/342/224/220.py +46 -0
  113. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/211/320/223/320/270/321/204/342/225/227/342/225/242.py +115 -0
  114. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/223/320/237/321/211/320/262/320/254/321/210/320/231/342/226/223/321/205/320/276/320/252/321/204/342/225/243/320/231.py +234 -0
  115. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/320/264/342/224/244/321/205/320/237/320/241/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +29 -0
  116. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/342/225/225/342/225/234/321/205/320/275/320/240/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +24 -0
  117. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/207/320/276/342/226/222.py +12 -0
  118. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/207/320/254/320/231/321/206/320/277/320/253/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +29 -0
  119. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/207/320/254/342/225/235/321/207/320/255/320/253/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +24 -0
  120. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/207/320/254/342/225/235/321/211/320/245/320/254/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +24 -0
  121. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/210/320/220/342/224/202/321/206/320/254/342/225/241/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +29 -0
  122. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/210/320/223/320/234/321/206/320/251/320/277/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +24 -0
  123. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/210/320/223/320/261/321/211/320/261/342/225/227/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +29 -0
  124. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/210/320/263/320/225/321/211/320/265/342/226/221/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +24 -0
  125. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/211/320/255/320/262/321/211/320/223/320/270/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +29 -0
  126. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/264/342/224/244/321/205/320/223/320/237//321/211/342/225/235/342/225/227/321/205/320/275/320/240/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +24 -0
  127. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/275/320/266/321/204/342/225/243/320/260/__init__.py +0 -0
  128. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/275/320/266/321/204/342/225/243/320/260//321/204/342/225/234/320/254/321/206/320/246/320/227/321/207/342/225/221/342/225/225/321/206/320/231/320/243/321/205/320/235/342/226/221/321/206/320/270/320/261/321/206/320/255/342/224/220.py +78 -0
  129. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/275/320/266/321/204/342/225/243/320/260//321/207/320/244/342/226/221/321/205/320/275/320/247/321/206/320/260/342/225/235/321/205/320/275/320/247/321/205/342/225/225/320/246/321/206/320/270/320/261/321/206/320/255/342/224/220.py +175 -0
  130. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/275/320/266/321/204/342/225/243/320/260//321/207/320/273/320/246/321/206/320/236/320/242/321/204/342/225/243/320/266/321/206/342/224/202/320/245.py +32 -0
  131. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/275/320/266/321/204/342/225/243/320/260//321/210/320/233/342/226/222/321/210/320/277/320/275/321/207/342/225/221/342/225/225/321/206/320/231/320/243/321/205/320/235/342/226/221/321/206/320/270/320/261/321/206/320/255/342/224/220.py +37 -0
  132. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/275/320/266/321/204/342/225/243/320/260//321/211/320/273/320/250/321/206/342/225/225/320/225/321/207/320/244/342/225/241/321/205/320/275/320/240/321/204/342/225/243/320/266/321/205/320/230/342/225/242/321/204/342/225/234/320/254.py +416 -0
  133. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/276/320/264/321/205/320/226/320/225/321/210/320/276/342/225/233/321/210/320/276/320/261/__init__.py +0 -0
  134. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/276/320/264/321/205/320/226/320/225/321/210/320/276/342/225/233/321/210/320/276/320/261//321/205/342/225/221/320/232.py +0 -0
  135. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/276/320/264/321/205/320/226/320/225/321/210/320/276/342/225/233/321/210/320/276/320/261//321/206/320/230/342/224/220/321/211/320/247/342/224/244.py +286 -0
  136. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/276/320/264/321/205/320/226/320/225/321/210/320/276/342/225/233/321/210/320/276/320/261//321/206/320/257/320/254/321/205/320/275/320/240.py +0 -0
  137. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/276/320/264/321/205/320/226/320/225/321/210/320/276/342/225/233/321/210/320/276/320/261//321/206/320/261/320/234/321/205/320/275/320/240.py +0 -0
  138. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/276/320/264/321/205/320/226/320/225/321/210/320/276/342/225/233/321/210/320/276/320/261//321/206/320/264/320/225/321/205/320/275/320/240.py +0 -0
  139. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/320/276/320/264/321/205/320/226/320/225/321/210/320/276/342/225/233/321/210/320/276/320/261//321/211/320/242/320/262/321/207/320/240/342/224/244.py +0 -0
  140. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/342/225/226/320/265/321/204/342/225/234/320/254/__init__.py +0 -0
  141. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/205/342/225/226/320/265/321/204/342/225/234/320/254//321/205/320/254/320/226/321/205/342/225/234/320/262/321/205/320/235/342/226/221/321/207/320/273/320/260/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +121 -0
  142. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/205/342/225/226/320/265/__init__.py +0 -0
  143. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/205/342/225/226/320/265//321/205/320/227/320/260/321/204/342/225/234/320/245/321/204/342/225/234/320/243/321/205/342/226/222/320/245/321/205/342/225/235/320/220/321/205/320/253/342/225/233.py +118 -0
  144. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/205/342/225/226/320/265//321/205/342/225/243/342/224/202/321/211/320/255/320/262/321/207/320/273/320/233/321/204/342/225/234/320/243/321/207/320/244/342/225/227.py +66 -0
  145. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221/__init__.py +0 -0
  146. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/205/320/277/320/226/321/205/342/225/221/320/266/321/206/320/246/320/227/321/205/320/275/320/247/321/205/320/223/320/237/321/207/342/224/244/320/260/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +103 -0
  147. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/205/342/225/233/320/276/321/204/342/224/220/320/261/321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263.py +243 -0
  148. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/223/320/237/321/207/342/224/244/320/260/321/210/320/231/342/225/221/321/206/320/254/320/277/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +172 -0
  149. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/227/320/260/321/204/342/225/234/320/245/321/205/320/253/342/225/233/321/205/342/225/234/320/262/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +82 -0
  150. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/232/320/270/321/206/342/225/235/320/273/321/204/342/225/225/342/225/227/321/211/320/262/320/250/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +41 -0
  151. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/235/320/245/321/210/320/231/342/226/223/321/210/320/223/320/234/321/206/320/251/320/277/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +45 -0
  152. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/264/320/246/321/205/320/263/342/224/202/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +241 -0
  153. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/267/320/243/321/206/342/226/221/320/237/321/204/342/225/225/342/225/227/321/211/320/262/320/250/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +63 -0
  154. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/226/221/342/224/244/321/207/320/237/320/260/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +41 -0
  155. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/207/320/257/320/271/321/211/320/250/342/225/241/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +188 -0
  156. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/210/320/223/320/234/321/206/320/251/320/277/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +43 -0
  157. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/342/226/222/320/237/321/205/342/225/243/320/245/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +170 -0
  158. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/206/342/226/221/342/224/244/321/207/320/237/320/260/321/204/342/225/225/342/225/227/321/211/320/262/320/250/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +80 -0
  159. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/207/342/225/227/320/250/321/205/320/253/342/225/233/321/206/320/255/342/224/220.py +143 -0
  160. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/211/320/227/320/235/321/205/320/264/320/235/321/206/342/225/225/320/240/321/210/342/224/220/320/241/321/210/320/231/342/226/223/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +67 -0
  161. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/231/320/233/321/206/320/254/342/225/221/321/211/320/244/320/221/321/205/342/226/222/320/237/321/207/320/244/342/225/227/321/211/320/255/320/262.py +68 -0
  162. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/206/320/251/342/225/221/321/210/320/223/342/225/234/321/206/320/231/320/233/321/206/320/254/342/225/221/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +64 -0
  163. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/231/320/233/321/206/320/254/342/225/221//321/207/320/244/342/225/241/321/210/320/267/320/226/321/204/342/224/220/320/261/321/205/320/237/342/225/226/321/206/342/225/241/320/233/321/210/320/277/320/245/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +76 -0
  164. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/245/342/226/221/321/205/320/275/320/266/__init__.py +0 -0
  165. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/245/342/226/221/321/205/320/275/320/266//321/206/320/262/320/266/321/205/342/225/243/342/225/227/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/225/226/342/226/222/321/206/342/225/225/320/232/321/206/320/231/320/233/321/206/320/254/342/225/221/321/205/320/263/320/221/321/207/342/225/221/342/225/225.py +84 -0
  166. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/206/320/245/342/226/221/321/205/320/275/320/266//321/206/320/262/320/266/321/205/342/225/243/342/225/227/321/205/342/225/234/320/271/321/210/320/251/342/225/243/321/206/342/225/235/320/271/321/206/342/225/242/320/261.py +43 -0
  167. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240/__init__.py +0 -0
  168. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/204/342/225/225/320/275/321/205/320/253/342/225/234/321/205/320/254/342/226/221/321/205/320/253/342/225/233/321/206/320/233/342/225/235/321/205/320/253/342/225/233.py +362 -0
  169. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/204/342/225/225/320/275/321/205/320/253/342/225/234/321/210/342/226/222/320/261/321/206/320/263/320/233.py +323 -0
  170. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/206/320/247/320/265/321/205/320/236/320/226/321/205/320/230/342/225/242/321/204/342/225/234/320/254.py +177 -0
  171. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/207/320/244/342/225/241/321/210/320/267/320/226/321/204/342/224/220/320/261/321/205/320/237/342/225/226/321/206/342/225/241/320/233/321/210/320/277/320/245/321/205/320/253/342/225/233/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +248 -0
  172. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/207/342/225/221/342/225/225/321/207/320/274/320/244/321/204/342/225/221/320/244/321/205/320/275/320/240/321/206/320/263/320/233.py +244 -0
  173. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/320/244/320/257/321/206/342/224/244/342/225/227/321/205/320/270/342/226/222/321/204/342/225/243/320/240//321/211/342/225/221/342/225/227/321/205/342/226/221/320/226/321/207/320/231/320/234.py +121 -0
  174. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227/__init__.py +0 -0
  175. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/204/342/225/225/320/231/321/205/320/236/320/257/321/210/320/231/342/226/223/321/207/342/225/227/320/250/321/205/320/253/342/225/233/321/206/320/255/342/224/220.py +144 -0
  176. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/204/342/225/225/320/231/321/206/320/254/320/230/321/204/342/225/225/320/231/321/205/320/253/342/225/233/321/206/320/260/320/227/321/210/320/276/342/225/233/321/210/320/276/320/261.py +77 -0
  177. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/205/320/264/320/272/321/206/320/256/320/221/321/205/320/253/342/225/233/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +59 -0
  178. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/206/320/231/320/233/321/206/320/254/342/225/221/321/206/320/246/320/227/321/205/320/275/320/247/321/205/320/223/320/237/321/207/342/224/244/320/260/321/210/320/231/342/225/221/321/206/320/254/320/277/321/207/320/244/342/225/227.py +215 -0
  179. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/206/342/226/221/342/224/244/321/207/320/237/320/260/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +64 -0
  180. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243/321/205/320/253/342/225/233/321/206/320/260/320/227/321/210/320/276/342/225/233/321/210/320/276/320/261.py +46 -0
  181. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/210/320/263/342/225/225/321/207/320/254/342/225/2353D/321/205/320/253/342/225/233.py +56 -0
  182. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/210/320/277/320/224/321/205/320/230/320/226/321/210/320/261/320/270/321/206/320/223/320/225/321/205/320/234/320/225.py +75 -0
  183. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/207/342/225/227/320/250/321/207/320/244/342/225/227//321/210/342/225/242/320/225/321/207/342/225/221/320/267/321/207/320/236/320/253/321/204/342/225/225/342/225/234/321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +577 -0
  184. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/211/320/257/342/224/202/321/204/342/225/243/320/240/__init__.py +0 -0
  185. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/260/320/221/321/211/320/255/320/243/321/205/342/225/221/320/243//321/211/320/257/342/224/202/321/204/342/225/243/320/240//321/204/342/225/221/320/244/321/207/342/225/221/342/224/220/321/210/342/226/221/342/226/222/321/206/320/231/320/243/321/205/320/235/342/226/221/321/206/320/270/320/261/321/206/320/255/342/224/220.py +164 -0
  186. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243/PDF/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +317 -0
  187. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243/SVG/321/205/320/253/342/225/233/321/207/320/231/320/227/321/207/342/224/244/320/262/321/205/342/225/235/320/245/321/205/320/253/342/225/233.py +73 -0
  188. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243/SVG/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/342/225/234/320/274/321/205/320/225/320/223/321/207/342/224/244/320/260.py +325 -0
  189. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243/_SVG/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/342/225/234/320/274/321/205/320/225/320/223/321/207/342/224/244/320/260.py +151 -0
  190. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243/__init__.py +16 -0
  191. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243/_/321/210/320/277/342/224/244/321/206/320/250/320/236.txt +2 -0
  192. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243/cairosvg/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +81 -0
  193. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/204/342/225/225/320/275/321/206/320/246/320/227/321/207/342/225/235/320/246/321/207/320/270/320/233/321/205/320/276/320/252/321/204/342/225/243/320/231.py +356 -0
  194. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/220/320/242/321/210/320/267/320/242/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +217 -0
  195. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243/__init__.py +23 -0
  196. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260.py +1269 -0
  197. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_SVG/321/205/320/253/342/225/233.py +45 -0
  198. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/205/320/253/342/225/233.py +233 -0
  199. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/205/320/253/342/225/233/321/206/320/261/320/230.py +62 -0
  200. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/205/320/254/320/226.py +78 -0
  201. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/205/320/264/320/235/321/207/320/244/320/270.py +72 -0
  202. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/205/320/264/320/252/321/210/342/225/233/342/225/243/321/205/342/225/234/320/262.py +88 -0
  203. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/206/320/232/320/250/321/207/342/225/221/342/224/220.py +71 -0
  204. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/206/320/246/320/227/321/205/320/275/320/247.py +239 -0
  205. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/206/320/260/320/227/321/210/320/276/342/226/221.py +18 -0
  206. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/206/320/264/320/275/321/205/320/254/320/226.py +79 -0
  207. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/206/320/270/320/261/321/206/320/255/342/224/220.py +119 -0
  208. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/207/320/257/320/271/321/205/342/225/234/320/262.py +92 -0
  209. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/207/342/225/221/342/224/220.py +76 -0
  210. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/207/342/225/227/320/224.py +124 -0
  211. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/210/320/263/320/221/321/205/320/231/320/272.py +48 -0
  212. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/210/342/225/226/320/277/321/205/342/225/233/320/224.py +1786 -0
  213. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/210/342/225/226/320/277/321/205/342/225/233/320/224/321/206/320/246/320/227/321/205/320/275/320/247.py +119 -0
  214. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/211/320/221/320/276/321/207/342/225/234/320/271.py +75 -0
  215. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260_/321/211/320/243/342/225/233/321/206/320/236/320/265.py +39 -0
  216. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/210/342/225/234/320/274/321/210/342/225/226/320/277/321/205/342/225/233/320/224/321/206/320/244/320/277/321/206/320/234/320/221.py +14 -0
  217. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/205/320/237/320/277/321/206/320/243/320/235/321/204/342/225/234/320/254/321/205/320/225/320/223/321/207/342/224/244/320/260/321/211/320/253/320/226/321/205/320/240/320/230.py +98 -0
  218. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/221/320/243//321/206/342/225/225/320/240/321/205/320/237/320/250/321/210/320/231/342/226/223.py +67 -0
  219. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +86 -0
  220. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/206/320/236/320/242/321/205/320/230/320/247/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +178 -0
  221. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/225/320/223/321/207/342/224/244/320/260/321/211/320/227/320/235/321/205/320/264/320/235/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +270 -0
  222. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/232/320/270/321/207/320/244/342/225/227/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +477 -0
  223. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/235/342/226/221/321/207/320/273/320/260/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +354 -0
  224. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/237/320/250/321/206/320/235/320/262/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +115 -0
  225. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/237/320/250/321/206/320/235/320/262/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226_/321/204/342/224/220/320/255/321/207/320/245/320/251.py +419 -0
  226. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/253/342/225/233/321/205/320/223/320/237/321/205/320/264/320/224/321/207/320/240/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226.py +468 -0
  227. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/275/320/247/321/204/342/225/234/320/243/321/206/320/257/320/265/321/206/320/231/342/225/233/321/205/320/251/320/270.py +321 -0
  228. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/275/320/247/321/204/342/225/234/320/243/321/206/320/257/320/265/321/207/320/254/320/233/321/207/342/224/244/320/262/321/205/342/225/235/320/245/321/211/320/261/342/225/241/321/207/320/244/320/257/321/206/320/230/320/240.py +169 -0
  229. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/275/320/247/321/204/342/225/234/320/243/321/206/320/260/342/225/226/321/205/342/225/235/320/237.css +36 -0
  230. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/275/320/247/321/207/320/274/320/266/321/204/342/225/225/342/226/223/321/205/320/230/320/247/321/210/320/261/320/270.py +2680 -0
  231. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/320/276/320/252/321/204/342/225/243/320/231/321/211/320/253/320/226.py +974 -0
  232. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/205/342/225/234/320/262/321/207/320/232/342/225/242/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +220 -0
  233. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/206/320/231/342/225/243/321/211/320/227/320/237zip/321/210/320/267/320/263/321/205/320/236/320/233.py +82 -0
  234. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/205/320/264/320/224/321/207/320/240/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226.py +132 -0
  235. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/206/320/246/320/227/321/205/320/275/320/247/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +170 -0
  236. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/206/320/260/342/225/226/321/205/342/225/235/320/237/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +500 -0
  237. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/206/342/225/227/320/264/321/211/320/245/320/254/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +392 -0
  238. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/206/342/225/242/320/230/321/206/320/221/320/277/321/206/320/261/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +88 -0
  239. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/207/320/231/342/225/243/321/206/320/276/320/232/321/207/320/274/320/266/321/205/320/237/342/225/226.md +90 -0
  240. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/206/320/270/320/261/321/206/320/255/342/224/220.py +73 -0
  241. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/207/342/225/227/320/250/321/205/320/253/342/225/233/321/206/320/255/342/224/220.py +3172 -0
  242. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/207/342/225/227/320/250/321/205/320/253/342/225/233/321/206/320/255/342/224/220/321/205/342/225/226/320/265/321/205/320/225/342/225/226.py +1793 -0
  243. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/207/320/274/320/266/321/205/320/237/342/225/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +34 -0
  244. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/207/342/225/221/342/224/220/321/206/320/255/320/261/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +423 -0
  245. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/207/342/226/222/342/225/227/321/205/320/256/320/233/321/210/342/225/234/320/274/321/206/320/235/320/262/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +30 -0
  246. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/210/342/225/226/320/277/321/205/342/225/233/320/224/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +633 -0
  247. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/211/320/220/320/252/321/207/320/244/320/270/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/211/320/253/320/226.py +501 -0
  248. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/207/320/265/320/256/321/207/320/274/320/244/321/205/342/225/221/320/243//321/211/320/225/320/235/321/207/342/225/234/320/276.py +42 -0
  249. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/205/320/253/342/225/234/321/206/320/247/320/247//321/204/342/225/225/320/275/321/205/320/253/342/225/234/321/205/320/253/342/225/234/321/206/320/247/320/247.svg +47 -0
  250. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263/4g.svg +3 -0
  251. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263/5g.svg +3 -0
  252. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263/hd.svg +45 -0
  253. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/204/342/224/220/320/261/321/205/320/237/342/225/226.svg +3 -0
  254. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/205/320/262/320/256/321/205/320/232/320/260.svg +5 -0
  255. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/206/320/231/320/233/321/207/320/244/342/225/241/321/207/320/275/320/242.svg +17 -0
  256. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/206/320/255/320/265/321/207/320/244/342/225/241.svg +5 -0
  257. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/207/320/244/342/225/241/321/206/342/226/222/320/260.svg +6 -0
  258. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/207/320/253/342/225/225/321/206/320/254/342/225/221.svg +24 -0
  259. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/207/320/254/342/225/235/321/207/320/255/320/253.svg +4 -0
  260. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/207/320/274/320/241/321/210/320/224/342/225/225.svg +6 -0
  261. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/210/320/243/320/255/321/207/320/231/320/251.svg +2 -0
  262. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/210/320/277/320/275/321/211/320/257/342/224/202.svg +1 -0
  263. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/210/342/224/220/320/240/321/205/320/232/320/270/321/211/320/256/320/233.svg +16 -0
  264. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/320/221/320/232/321/205/320/264/320/271/321/207/320/272/320/247/321/205/320/237/320/263//321/211/320/244/320/221.svg +17 -0
  265. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/207/342/225/221/342/225/243/321/207/320/240/320/226//321/207/342/225/221/342/225/243/321/207/320/240/320/2261.svg +2 -0
  266. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/207/342/225/221/342/225/243/321/207/320/240/320/226//321/207/342/225/221/342/225/243/321/207/320/240/320/2262.svg +2 -0
  267. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/207/342/225/221/342/225/243/321/207/320/240/320/226//321/207/342/225/221/342/225/243/321/207/320/240/320/2263.svg +2 -0
  268. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/207/342/225/221/342/225/243/321/207/320/240/320/226//321/207/342/225/221/342/225/243/321/207/320/240/320/2264.svg +2 -0
  269. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/207/342/225/221/342/225/243/321/207/320/240/320/226//321/207/342/225/221/342/225/243/321/207/320/240/320/2265.svg +2 -0
  270. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/207/342/225/221/342/225/243/321/207/320/240/320/226//321/207/342/225/221/342/225/243/321/207/320/240/320/2266_black.svg +2 -0
  271. /321/207/320/265/320/256/321/207/320/274/320/244/321/207/320/260/320/221/321/211/320/255/320/243//321/210/342/225/241/320/224/321/206/342/225/221/320/240/321/205/342/225/221/320/243//321/207/342/224/244/320/260/321/206/320/255/320/240//321/210/342/225/242/342/224/202/321/207/320/240/320/223/321/207/342/225/221/342/225/243/321/207/320/240/320/226//321/207/342/225/221/342/225/243/321/207/320/240/320/2266_red.svg +2 -0
@@ -0,0 +1,1269 @@
1
+ # -*- coding:utf-8 -*-
2
+ # title :
3
+ # description :
4
+ # author :Python超人/三月三提供
5
+ # date :2024-06-01
6
+ # link :https://gitee.com/march3
7
+ # python_version :3.9
8
+ # ==============================================================================
9
+ import svgwrite
10
+ from typing import Optional, Tuple
11
+ from 神笔码靓.神笔库.动画工具集 import 缩放动画关键帧, 旋转动画关键帧, 倾斜动画关键帧, 平移动画关键帧
12
+ from 神笔码靓.神笔库.定义集 import *
13
+ from 神笔码靓.神笔库.通用工具集 import *
14
+
15
+
16
+ @dataclass
17
+ class 元素位置信息:
18
+ 最小x: [float, int] = 0
19
+ 最小y: [float, int] = 0
20
+ 最大x: [float, int] = 0
21
+ 最大y: [float, int] = 0
22
+ # 自定义的中心点
23
+ 中心点 = None
24
+
25
+ @property
26
+ def 中心x(self):
27
+ if isinstance(self.中心点, tuple):
28
+ return self.中心点[0]
29
+ return (self.最小x + self.最大x) / 2
30
+
31
+ @property
32
+ def 中心y(self):
33
+ if isinstance(self.中心点, tuple):
34
+ return self.中心点[1]
35
+ return (self.最小y + self.最大y) / 2
36
+
37
+ @property
38
+ def 宽(self):
39
+ return self.最大x - self.最小x
40
+
41
+ @property
42
+ def 高(self):
43
+ return self.最大y - self.最小y
44
+
45
+ def __str__(self):
46
+ return f"x:{self.最小x:.2f}~{self.最大x:.2f} y:{self.最小y:.2f}~{self.最大y:.2f};\n" \
47
+ f"中点:{self.中心x:.2f}, {self.中心y:.2f} 宽:{self.宽} 高:{self.高}"
48
+
49
+
50
+ class 元素:
51
+ _id_no = 0
52
+ 元素缓存 = {}
53
+
54
+ 数值精确度 = 2
55
+ 数值精确度的属性 = ["x", "y", "cx", "cy"]
56
+
57
+ @staticmethod
58
+ def 元素缓存清除():
59
+ 元素.元素缓存 = {}
60
+
61
+ # z_orders = []
62
+ @staticmethod
63
+ def 重置ID():
64
+ 元素._id_no = 0
65
+
66
+ def 克隆(self):
67
+ import copy
68
+ 新元素 = copy.deepcopy(self)
69
+ 新元素.svg_element = None
70
+ 新元素.设置id(元素.生成元素id(t="clone"))
71
+ # 所属组 = 新元素.所属组
72
+ # 所属组.remove(新元素)
73
+ # 所属组.append(self)
74
+ # self.高清图.默认组.remove(self)
75
+ # self.高清图.默认组.append(self)
76
+ self.高清图.默认组.append(新元素)
77
+ return 新元素
78
+
79
+ def 设置id(self, id_):
80
+ if id_ is None:
81
+ return self
82
+ old_id = self.获取属性值("id_", None)
83
+ if old_id is not None:
84
+ if old_id == id_:
85
+ return self
86
+ if self.高清图.获取元素(old_id) == self:
87
+ if old_id in self.高清图.元素字典:
88
+ del self.高清图.元素字典[old_id]
89
+ self.设置属性值("id_", id_)
90
+ self.高清图.元素字典[id_] = self
91
+ return self
92
+
93
+ def __init__(self, 高清图, 所属组: list):
94
+ from 神笔码靓.神笔库.变换工具集 import 变换工具集
95
+ from 神笔码靓.神笔库.样式工具集 import 样式工具集
96
+ from 神笔码靓.神笔库.滤镜工具集 import 滤镜工具集
97
+ from 神笔码靓.神笔库.动画工具集 import 动画工具集
98
+ from 神笔码靓.神笔库 import 神笔绘图板
99
+
100
+ self.svg_element = None
101
+ self.元素属性 = {}
102
+ self.元素附加属性 = {}
103
+ self.元素处理列表 = []
104
+ self.已有缓存 = 否
105
+ self._不生成ID = False
106
+
107
+ self.所属组 = 所属组
108
+ self.所属组.append(self)
109
+
110
+ self.dwg: svgwrite.Drawing = 高清图.dwg
111
+
112
+ self.高清图: 神笔绘图板 = 高清图
113
+ # ---------- 修改点1:实例化滤镜工具集并赋值给 self.滤镜 ----------
114
+ self.滤镜: 滤镜工具集 = 滤镜工具集(高清图)
115
+ self.样式: 样式工具集 = 高清图.样式
116
+ self.变换: 变换工具集 = 高清图.变换
117
+ self.动画: 动画工具集 = 高清图.动画
118
+
119
+ # ---------- 新增:用于存储滤镜操作列表 ----------
120
+ self._滤镜操作列表 = []
121
+
122
+ def 不生成ID(self):
123
+ self._不生成ID = True
124
+ return self
125
+
126
+ def 创建组合(self, class_name: str = None, style=None,
127
+ 样式类名: str = None, 样式串: str = None, id_: str = None):
128
+ return self.高清图.创建组合(元素列表=[self], class_name=class_name, style=class_name,
129
+ 样式类名=样式类名, 样式串=样式串, id_=id_)
130
+
131
+ def 创建模板(self, class_name: str = None, style=None,
132
+ 样式类名: str = None, 样式串: str = None, id_: str = None):
133
+ return self.高清图.创建模板(元素列表=[self], class_name=class_name, style=class_name,
134
+ 样式类名=样式类名, 样式串=样式串, id_=id_)
135
+
136
+ def 添加到列表(self, 元素列表: list):
137
+ if self not in 元素列表:
138
+ 元素列表.append(self)
139
+ return self
140
+
141
+ def 置前(self):
142
+ # self.高清图.创建组合(元素列表=[self])
143
+ self.所属组.remove(self)
144
+ self.所属组.append(self)
145
+ # 元素.z_orders.append(self)
146
+ return self
147
+
148
+ # region 动画
149
+
150
+ def 透明动画(self, 透明度循环集=[0.5, 1.0, 0.5], 持续时间: [float, int] = 1, 重复次数: int = None,
151
+ 填充行为="remove", id_: str = None):
152
+ self.元素处理预设(self.动画.透明, {
153
+ "透明度循环集": 透明度循环集, "持续时间": 持续时间, "重复次数": 重复次数, "填充行为": 填充行为, "id_": id_
154
+ })
155
+ return self
156
+
157
+ def 虚线流动画(self, 方向: int = 1, 持续时间: [float, int] = 3, 周期: [float, int] = None,
158
+ 重复次数: int = None, 填充行为="remove", id_: str = None):
159
+ """
160
+ @param 方向:
161
+ @param 持续时间:
162
+ @param 周期:
163
+ @param 重复次数:
164
+ @param 填充行为:
165
+ @return:
166
+ """
167
+ self.元素处理预设(self.动画.虚线流, {
168
+ "方向": 方向, "持续时间": 持续时间, "周期": 周期, "重复次数": 重复次数, "填充行为": 填充行为, "id_": id_
169
+ })
170
+ return self
171
+
172
+ # def 自旋转(self, 旋转角度: float): 不支持
173
+ # self.设置属性值("自旋转", 旋转角度)
174
+ # return self
175
+
176
+ def 平移动画(self, 开始时间=0, 持续时间=3,
177
+ 起点X=0, 起点Y=0, 终点X=0, 终点Y=-2000, 重复次数=None, 填充行为="freeze",
178
+ 关键帧列表: list[平移动画关键帧] = [], id_: str = None):
179
+ """
180
+ [使用样例]
181
+ from 神笔码靓.神笔库.动画工具集 import 平移动画关键帧
182
+ 关键帧列表 = 列表()
183
+ 关键帧列表.添加元素(平移动画关键帧(时间点=0, 位置X=90, 位置Y=0))
184
+ 关键帧列表.添加元素(平移动画关键帧(时间点=0.8, 位置X=20, 位置Y=10))
185
+ 关键帧列表.添加元素(平移动画关键帧(时间点=1, 位置X=90, 位置Y=30))
186
+ :param 开始时间: 指定动画开始的时间。可以是具体的时间值,也可以是一些特殊的值如"点击"或"鼠标悬停"等。
187
+ :param 持续时间: 指定动画的持续时间,以秒为单位。
188
+ :param 起点X: 指定变换的起始值。
189
+ :param 起点Y: 指定变换的起始值。
190
+ :param 终点X: 指定变换的结束值。
191
+ :param 终点Y: 指定变换的结束值。
192
+ :param 重复次数: 指定动画的重复次数。可以是具体的次数,也可以是"indefinite"表示无限次
193
+ :param 填充行为: 指定动画的填充行为。可以是"remove"表示动画结束后还原到初始状态,也可以是"freeze"表示结束后保留动画最后的状态
194
+ :return:
195
+ """
196
+ self.元素处理预设(self.动画.平移, {
197
+ "开始时间": 开始时间, "持续时间": 持续时间, "起点X": 起点X, "起点Y": 起点Y,
198
+ "终点X": 终点X, "终点Y": 终点Y, "重复次数": 重复次数, "填充行为": 填充行为, "关键帧列表": 关键帧列表,
199
+ "id_": id_
200
+ })
201
+ return self
202
+
203
+ def 轨迹移动动画(self, 路径点列表, 开始时间=0, 持续时间=3, 重复次数=None, 旋转=None, 填充行为="remove",
204
+ id_: str = None):
205
+ """
206
+ @param 路径点列表:
207
+ @param 开始时间:
208
+ @param 持续时间:
209
+ @param 重复次数:
210
+ @param 旋转: 自动旋转(auto),自动反向旋转(auto-reverse),固定角度值(如45deg、0),相对角度值(如rotate="+90deg")
211
+ @param 填充行为:
212
+ @return:
213
+ """
214
+ self.元素处理预设(self.动画.轨迹移动, {
215
+ "开始时间": 开始时间, "持续时间": 持续时间, "路径点列表": 路径点列表, "重复次数": 重复次数,
216
+ "旋转": 旋转, "填充行为": 填充行为, "id_": id_
217
+ })
218
+ return self
219
+
220
+ def 旋转动画(self, 开始时间=0, 持续时间=3,
221
+ 起始角=0, 起始旋转中心点=(0, 0), 结束角=360, 结束旋转中心点=None, 重复次数=None, 填充行为="remove",
222
+ 关键帧列表: list[旋转动画关键帧] = [], id_: str = None):
223
+ """
224
+ [使用样例]
225
+ from 神笔码靓.神笔库.动画工具集 import 旋转动画关键帧
226
+ 关键帧列表 = 列表()
227
+ 关键帧列表.添加元素(旋转动画关键帧(时间点=0, 旋转角=90, 旋转中心点=(0, 0)))
228
+ 关键帧列表.添加元素(旋转动画关键帧(时间点=0.8, 旋转角=20, 旋转中心点=(0, 0)))
229
+ 关键帧列表.添加元素(旋转动画关键帧(时间点=1, 旋转角=90, 旋转中心点=(0, 0)))
230
+ :param 开始时间:
231
+ :param 持续时间:
232
+ :param 起始角:
233
+ :param 起始旋转中心点:
234
+ :param 结束角:
235
+ :param 结束旋转中心点:
236
+ :param 重复次数:
237
+ :param 填充行为:
238
+ :param 关键帧列表:
239
+ :return:
240
+ """
241
+ if 起始旋转中心点 is None:
242
+ 起始旋转中心点 = (0, 0)
243
+ if 结束旋转中心点 is None:
244
+ 结束旋转中心点 = 起始旋转中心点
245
+ self.元素处理预设(self.动画.旋转, {
246
+ "开始时间": 开始时间, "持续时间": 持续时间, "起始角": 起始角, "起始旋转中心点": 起始旋转中心点,
247
+ "结束角": 结束角, "结束旋转中心点": 结束旋转中心点, "重复次数": 重复次数, "填充行为": 填充行为,
248
+ "关键帧列表": 关键帧列表, "id_": id_
249
+ })
250
+ return self
251
+
252
+ def 加速旋转动画(
253
+ self,
254
+ 旋转中心点: Tuple[float, float],
255
+ 加速分段数量: int = 20,
256
+ 开始时间: float = 0.0,
257
+ 开始一圈时长: float = 0.5,
258
+ 末尾段循环次数: Optional[int] = None,
259
+ # 两种配置格式二选一:
260
+ # 1.相对进度模式:[(进度阈值0~1, 衰减系数)] 适配任意分段【推荐默认】
261
+ # 2.绝对序号模式:[(序号阈值, 衰减系数)] 复刻原始硬编码i判断逻辑
262
+ 加速区间配置=None,
263
+ # 安全下限:防止持续时间过小,浏览器丢弃动画
264
+ 最小一圈时长: float = 0.001,
265
+ id前缀=None,
266
+ 控制台输出=True
267
+ ):
268
+ """
269
+ 通用渐进加速旋转SVG动画,自动适配【个位数分段 / 数千超大分段】
270
+ 两种加速配置模式,按需切换,内置时长防坍缩保护
271
+
272
+ :param 旋转中心点: 旋转圆心 (cx, cy)
273
+ :param 加速分段数量: 动画拆分总段数,支持5 ~ 3000大范围
274
+ :param 开始时间: 首段动画启动时刻(秒)
275
+ :param 开始一圈时长: 初始旋转一圈耗时
276
+ :param 末尾段循环次数: int=有限循环次数; None=SVG无限循环indefinite
277
+ :param 加速区间配置:
278
+ 默认配置 = 自动复刻原始代码加速曲线(适配任意分段)
279
+ 【相对进度模式】示例 [(0.005,0.9), (0.015,0.95), (1.0,0.999)]
280
+ 【绝对序号模式】示例 [(10,0.9), (30,0.95), (float("inf"),0.999)]
281
+ :param 最小一圈时长: 一圈耗时下限,避免时长趋近0导致动画失效
282
+ """
283
+ if 控制台输出 and id前缀:
284
+ js_func = """
285
+ function rotateAnimListener(animId){
286
+ const anim = document.getElementById(animId);
287
+ // 动画【正式开始播放】触发
288
+ anim.addEventListener('beginEvent', function(e) {
289
+ console.log('动画启动:', e);
290
+ });
291
+ // 动画播放完成触发
292
+ anim.addEventListener('endEvent', function(e) {
293
+ console.log('动画结束:', e);
294
+ });
295
+ }
296
+ """
297
+ else:
298
+ js_func = None
299
+ # ========== 默认配置:将原版i<10,i<30转化为相对进度,通用所有分段 ==========
300
+ if 加速区间配置 is None:
301
+ # 原始拐点序号:10、30,换算成相对进度
302
+ 拐点1 = 10 / 加速分段数量
303
+ 拐点2 = 30 / 加速分段数量
304
+ 加速区间配置 = [
305
+ (拐点1, 0.9),
306
+ (拐点2, 0.95),
307
+ (1.00, 0.999)
308
+ ]
309
+
310
+ 当前起始时刻 = 开始时间
311
+ 当前一圈耗时 = 开始一圈时长
312
+ cx, cy = 旋转中心点
313
+ js = ""
314
+ for 分段序号 in range(加速分段数量):
315
+ # 还原原版重复次数计算公式
316
+ if 分段序号 >= 加速分段数量 - 1:
317
+ 本段循环 = 末尾段循环次数
318
+ else:
319
+ 本段循环 = int((分段序号 / 500) + 1)
320
+
321
+ if id前缀 is None:
322
+ id_ = None
323
+ else:
324
+ id_ = f"旋转动画_{id前缀}_{分段序号 + 1}"
325
+
326
+ if 控制台输出 and id前缀:
327
+ js += f'rotateAnimListener("{id_}");\n'
328
+
329
+ # 生成一段旋转动画
330
+ self.旋转动画(
331
+ 开始时间=当前起始时刻,
332
+ 持续时间=当前一圈耗时,
333
+ 结束角=360,
334
+ 起始旋转中心点=(cx, cy),
335
+ 重复次数=本段循环,
336
+ id_=id_,
337
+ )
338
+
339
+ # 无限循环:不再生成后续分段,直接退出
340
+ if 本段循环 is None:
341
+ break
342
+ # 更新下一段起始时间
343
+ 当前起始时刻 += 当前一圈耗时 * 本段循环
344
+
345
+ # =========自动识别配置模式:区分【进度阈值 / 绝对序号阈值】=========
346
+ 选中系数 = None
347
+ 阈值, _ = 加速区间配置[0]
348
+ if isinstance(阈值, float) and 0 <= 阈值 <= 1.0:
349
+ # 模式A:相对进度匹配(通用模式)
350
+ 当前进度 = 分段序号 / 加速分段数量
351
+ for 阈值, 系数 in 加速区间配置:
352
+ if 当前进度 < 阈值:
353
+ 选中系数 = 系数
354
+ break
355
+ else:
356
+ # 模式B:绝对序号匹配(兼容原版旧逻辑)
357
+ for 阈值, 系数 in 加速区间配置:
358
+ if 分段序号 < 阈值:
359
+ 选中系数 = 系数
360
+ break
361
+
362
+ # 衰减时长 + 强制下限保护,解决超大分段动画提前停止的核心BUG
363
+ 当前一圈耗时 = max(当前一圈耗时 * 选中系数, 最小一圈时长)
364
+ if 控制台输出 and id前缀:
365
+ js = js_func + js
366
+ self.高清图.增加JS代码(js)
367
+ return self
368
+
369
+ def 缩放动画(self, 开始时间=0, 持续时间=3,
370
+ 开始缩放X=1, 开始缩放Y=1, 结束缩放X=-2, 结束缩放Y=2, 重复次数=None, 填充行为="remove",
371
+ 关键帧列表: list[缩放动画关键帧] = [], id_: str = None):
372
+ """
373
+ [使用样例]
374
+ from 神笔码靓.神笔库.动画工具集 import 缩放动画关键帧
375
+ 关键帧列表 = 列表()
376
+ 关键帧列表.添加元素(缩放动画关键帧(时间点=0, 缩放X=1, 缩放Y=2))
377
+ 关键帧列表.添加元素(缩放动画关键帧(时间点=0.8, 缩放X=2, 缩放Y=1))
378
+ 关键帧列表.添加元素(缩放动画关键帧(时间点=1, 缩放X=1, 缩放Y=2))
379
+ :param 开始时间:
380
+ :param 持续时间:
381
+ :param 开始缩放X:
382
+ :param 开始缩放Y:
383
+ :param 结束缩放X:
384
+ :param 结束缩放Y:
385
+ :param 重复次数:
386
+ :param 填充行为:
387
+ :param 关键帧列表:
388
+ :return:
389
+ """
390
+ self.元素处理预设(self.动画.缩放, {
391
+ "开始时间": 开始时间, "持续时间": 持续时间,
392
+ "开始缩放X": 开始缩放X, "开始缩放Y": 开始缩放Y, "结束缩放X": 结束缩放X, "结束缩放Y": 结束缩放Y,
393
+ "重复次数": 重复次数, "填充行为": 填充行为, "关键帧列表": 关键帧列表, "id_": id_
394
+ })
395
+ return self
396
+
397
+ def 倾斜X动画(self, 开始时间=0, 持续时间=3, 起始倾斜角=0, 结束倾斜角=45, 重复次数=None, 填充行为="remove",
398
+ 关键帧列表: list[倾斜动画关键帧] = [], id_: str = None):
399
+ """
400
+ [使用样例]
401
+ from 神笔码靓.神笔库.动画工具集 import 倾斜动画关键帧
402
+ 关键帧列表 = 列表()
403
+ 关键帧列表.添加元素(倾斜动画关键帧(时间点=0, 倾斜角=90))
404
+ 关键帧列表.添加元素(倾斜动画关键帧(时间点=0.8, 倾斜角=20))
405
+ 关键帧列表.添加元素(倾斜动画关键帧(时间点=1, 倾斜角=90))
406
+ :param 开始时间:
407
+ :param 持续时间:
408
+ :param 起始倾斜角:
409
+ :param 结束倾斜角:
410
+ :param 重复次数:
411
+ :param 填充行为:
412
+ :param 关键帧列表:
413
+ :return:
414
+ """
415
+ self.元素处理预设(self.动画.倾斜X, {
416
+ "开始时间": 开始时间, "持续时间": 持续时间, "起始倾斜角": 起始倾斜角, "结束倾斜角": 结束倾斜角,
417
+ "重复次数": 重复次数, "填充行为": 填充行为, "关键帧列表": 关键帧列表, "id_": id_
418
+ })
419
+ return self
420
+
421
+ def 倾斜Y动画(self, 开始时间=0, 持续时间=3, 起始倾斜角=0, 结束倾斜角=45, 重复次数=None, 填充行为="remove",
422
+ 关键帧列表: list[倾斜动画关键帧] = [], id_: str = None):
423
+ """
424
+ [使用样例]
425
+ from 神笔码靓.神笔库.动画工具集 import 倾斜动画关键帧
426
+ 关键帧列表 = 列表()
427
+ 关键帧列表.添加元素(倾斜动画关键帧(时间点=0, 倾斜角=90))
428
+ 关键帧列表.添加元素(倾斜动画关键帧(时间点=0.8, 倾斜角=20))
429
+ 关键帧列表.添加元素(倾斜动画关键帧(时间点=1, 倾斜角=90))
430
+
431
+ :param 开始时间:
432
+ :param 持续时间:
433
+ :param 起始倾斜角:
434
+ :param 结束倾斜角:
435
+ :param 重复次数:
436
+ :param 填充行为:
437
+ :param 关键帧列表:
438
+ :return:
439
+ """
440
+ self.元素处理预设(self.动画.倾斜Y, {
441
+ "开始时间": 开始时间, "持续时间": 持续时间, "起始倾斜角": 起始倾斜角, "结束倾斜角": 结束倾斜角,
442
+ "重复次数": 重复次数, "填充行为": 填充行为, "关键帧列表": 关键帧列表, "id_": id_
443
+ })
444
+ return self
445
+
446
+ # endregion 动画
447
+
448
+ def 更换组(self, 组: list):
449
+ if self.所属组 is 组:
450
+ return
451
+
452
+ if self.所属组 is not 空:
453
+ self.所属组.remove(self)
454
+
455
+ 组.append(self)
456
+
457
+ def 中心点计算(self, 元素位置: 元素位置信息):
458
+ 元素位置.中心点 = 元素位置.中心x, 元素位置.中心y
459
+ return 元素位置.中心点
460
+
461
+ def 获取元素范围(self):
462
+ raise NotImplementedError("请实现 获取元素范围")
463
+
464
+ def 获取元素列表范围(self, 属性名="元素列表"):
465
+ P = self.获取属性值
466
+ 元素列表 = P(属性名)
467
+
468
+ 最小x = float('inf')
469
+ 最小y = float('inf')
470
+ 最大x = float('-inf')
471
+ 最大y = float('-inf')
472
+
473
+ for 元素_ in 元素列表:
474
+ 最小x_, 最小y_, 最大x_, 最大y_ = 元素_.获取元素范围()
475
+
476
+ if 最小x_ < 最小x:
477
+ 最小x = 最小x_
478
+
479
+ if 最小y_ < 最小y:
480
+ 最小y = 最小y_
481
+
482
+ if 最大x_ > 最大x:
483
+ 最大x = 最大x_
484
+
485
+ if 最大y_ > 最大y:
486
+ 最大y = 最大y_
487
+
488
+ return 最小x, 最小y, 最大x, 最大y
489
+
490
+ def 获取路径点列表(self, 属性名="点列表"):
491
+ P = self.获取属性值
492
+
493
+ 点列表 = P(属性名)
494
+ 路径点列表 = []
495
+ from 神笔码靓.神笔库 import 神笔绘图板工具
496
+ 点列表 = 神笔绘图板工具.转SVG绘制路径命令(点列表)
497
+
498
+ # ['M', 'm', 'L', 'l', 'H', 'h', 'V', 'v', 'C', 'c', 'S', 's', 'Q', 'q', 'T', 't', 'A', 'a', 'Z', 'z']
499
+ for 点 in 点列表:
500
+ if 点[0] in ["M", "m", "L", "l", "T", "t"]:
501
+ 顶点x, 顶点y = 点[1], 点[2]
502
+ elif 点[0] in ["C", "c"]:
503
+ # (x1, y1), (x2, y2), (x, y)
504
+ 顶点x, 顶点y = 点[5], 点[6]
505
+ elif 点[0] in ["H", "h"]:
506
+ 顶点x = 点[1]
507
+ elif 点[0] in ["V", "v"]:
508
+ 顶点y = 点[1]
509
+ elif 点[0] in ["Q", "q", "S", "s"]:
510
+ # (x1, y1), (x, y)
511
+ 顶点x, 顶点y = 点[3], 点[4]
512
+ elif 点[0] in ["A", "a"]:
513
+ # (rx, ry), x_axis_rotation, (large_arc_flag, sweep_flag), (x, y) =
514
+ 顶点x, 顶点y = 点[6], 点[7]
515
+ elif 点[0] in ["Z", "z"]:
516
+ pass
517
+ else:
518
+ 顶点x, 顶点y = 点[0], 点[1]
519
+ 路径点列表.append((顶点x, 顶点y))
520
+
521
+ return 路径点列表
522
+
523
+ def 获取路径点列表范围(self, 属性名="点列表"):
524
+ P = self.获取属性值
525
+
526
+ 点列表 = P(属性名)
527
+
528
+ 最小x = float('inf')
529
+ 最小y = float('inf')
530
+ 最大x = float('-inf')
531
+ 最大y = float('-inf')
532
+
533
+ from 神笔码靓.神笔库 import 神笔绘图板工具
534
+ 点列表 = 神笔绘图板工具.转SVG绘制路径命令(点列表)
535
+
536
+ # ['M', 'm', 'L', 'l', 'H', 'h', 'V', 'v', 'C', 'c', 'S', 's', 'Q', 'q', 'T', 't', 'A', 'a', 'Z', 'z']
537
+ for 点 in 点列表:
538
+ if 点[0] in ["M", "m", "L", "l", "T", "t"]:
539
+ 顶点x, 顶点y = 点[1], 点[2]
540
+ elif 点[0] in ["C", "c"]:
541
+ # (x1, y1), (x2, y2), (x, y)
542
+ 顶点x, 顶点y = 点[5], 点[6]
543
+ elif 点[0] in ["H", "h"]:
544
+ 顶点x = 点[1]
545
+ elif 点[0] in ["V", "v"]:
546
+ 顶点y = 点[1]
547
+ elif 点[0] in ["Q", "q", "S", "s"]:
548
+ # (x1, y1), (x, y)
549
+ 顶点x, 顶点y = 点[3], 点[4]
550
+ elif 点[0] in ["A", "a"]:
551
+ # (rx, ry), x_axis_rotation, (large_arc_flag, sweep_flag), (x, y) =
552
+ 顶点x, 顶点y = 点[6], 点[7]
553
+ elif 点[0] in ["Z", "z"]:
554
+ pass
555
+ else:
556
+ 顶点x, 顶点y = 点[0], 点[1]
557
+
558
+ if 顶点x < 最小x:
559
+ 最小x = 顶点x
560
+ if 顶点x > 最大x:
561
+ 最大x = 顶点x
562
+ if 顶点y < 最小y:
563
+ 最小y = 顶点y
564
+ if 顶点y > 最大y:
565
+ 最大y = 顶点y
566
+
567
+ return 最小x, 最小y, 最大x, 最大y
568
+
569
+ def 获取位置信息(self) -> 元素位置信息:
570
+ scale_x, scale_y, translate_x, translate_y = self.获取缩放平移值()
571
+ 最小x, 最小y, 最大x, 最大y = self.获取元素范围()
572
+
573
+ 元素位置_ = 元素位置信息(最小x=最小x * scale_x + translate_x, 最小y=最小y * scale_y + translate_y,
574
+ 最大x=最大x * scale_x + translate_x, 最大y=最大y * scale_y + translate_y)
575
+ 元素位置_.中心点 = self.中心点计算(元素位置_)
576
+ return 元素位置_
577
+
578
+ # region 元素属性
579
+ def 设置属性值(self, 属性名, 属性值):
580
+ self.元素属性[属性名] = 属性值
581
+ return self
582
+
583
+ def 清除属性值(self, 属性名):
584
+ if 属性名 in self.元素属性:
585
+ del self.元素属性[属性名]
586
+ return self
587
+
588
+ def 设置样式(self, 样式):
589
+ if 为空(样式):
590
+ return self
591
+ self.元素属性["style"] = 样式
592
+ return self
593
+
594
+ def 设置样式类名(self, 样式类名):
595
+ if 为空(样式类名):
596
+ return self
597
+ self.元素属性["样式类名"] = 样式类名
598
+ return self
599
+
600
+ def 批量设置属性(self, **kwargs):
601
+ for k in kwargs:
602
+ self.元素属性[k] = kwargs[k]
603
+ return self
604
+
605
+ def 批量获取属性(self, 属性名列表, 默认值列表=[]):
606
+ 属性值列表 = []
607
+ for idx, 属性名 in 索引列举(属性名列表):
608
+ if idx < len(默认值列表):
609
+ 属性值 = self.获取属性值(属性名, 默认值列表[idx])
610
+ else:
611
+ 属性值 = self.获取属性值(属性名)
612
+
613
+ 属性值列表.append(属性值)
614
+ return 属性值列表
615
+
616
+ def 获取属性值(self, 属性名, 默认值=空):
617
+ if 属性名 not in self.元素属性:
618
+ return 默认值
619
+ 属性值 = self.元素属性[属性名]
620
+
621
+ if 属性值 is None:
622
+ return 默认值
623
+
624
+ if 属性名 in 元素.数值精确度的属性:
625
+ return round(属性值, 元素.数值精确度)
626
+ return 属性值
627
+
628
+ def 获取颜色值(self, 属性名, 默认值=空):
629
+ 颜色值 = self.获取属性值(属性名, 默认值)
630
+
631
+ if isinstance(颜色值, dict): # 渐变色定义
632
+ 线性渐变 = 颜色值.get("线性渐变", None)
633
+ 径向渐变 = 颜色值.get("径向渐变", None)
634
+ if 线性渐变:
635
+ 开始, 结束 = 线性渐变[0], 线性渐变[-1]
636
+ 开始位置 = 颜色值.get("开始位置", (0, 0))
637
+ 结束位置 = 颜色值.get("结束位置", (100, 100))
638
+ 颜色值 = self.高清图.创建线性渐变色(
639
+ 开始位置=开始位置, 结束位置=结束位置,
640
+ 开始颜色=开始.get("颜色", 颜色.黑色), 结束颜色=结束.get("颜色", 颜色.白色),
641
+ 开始透明度=开始.get("透明度", 1.0), 结束透明度=结束.get("透明度", 1.0),
642
+ 开始偏移=开始.get("偏移", 0), 结束偏移=结束.get("偏移", 0),
643
+ 增加渐变中间点=线性渐变[1:-1]
644
+ )
645
+ elif 径向渐变:
646
+ 开始, 结束 = 径向渐变[0], 径向渐变[-1]
647
+ 渐变开始中心点 = 颜色值.get("开始中心点", (0, 0))
648
+ 渐变半径 = 颜色值.get("渐变半径", 100)
649
+ 渐变的焦点 = 颜色值.get("渐变的焦点", None)
650
+ 颜色值 = self.高清图.创建径向渐变色(
651
+ 渐变开始中心点=渐变开始中心点, 渐变半径=渐变半径, 渐变的焦点=渐变的焦点,
652
+ 开始颜色=开始.get("颜色", 颜色.黑色), 结束颜色=结束.get("颜色", 颜色.白色),
653
+ 开始透明度=开始.get("透明度", 1.0), 结束透明度=结束.get("透明度", 1.0),
654
+ 开始偏移=开始.get("偏移", 0), 结束偏移=结束.get("偏移", 0),
655
+ 增加渐变中间点=径向渐变[1:-1]
656
+ )
657
+
658
+ if hasattr(颜色值, "svg_element"):
659
+ 颜色值 = getattr(颜色值, "svg_element")
660
+
661
+ if hasattr(颜色值, "get_funciri"):
662
+ 颜色值 = getattr(颜色值, "get_funciri")()
663
+ else:
664
+ pass
665
+
666
+ return 颜色值
667
+
668
+ def 获取对象引用(self, 属性名, 默认值=空):
669
+ 对象 = self.获取属性值(属性名, 默认值)
670
+ if hasattr(对象, "build_svg_element"):
671
+ 对象 = 对象.build_svg_element()
672
+
673
+ if hasattr(对象, "get_iri"):
674
+ 引用值 = getattr(对象, "get_iri")()
675
+ else:
676
+ 引用值 = 对象
677
+
678
+ return 引用值
679
+
680
+ # endregion
681
+
682
+ @staticmethod
683
+ def 生成元素id(perfix='mar3_pycr_', t=''):
684
+ # id = f'{perfix}{t}_{str(self._id_no).rjust(5, "0")}'
685
+ id_ = f'{perfix}{t}_{str(元素._id_no)}'
686
+ 元素._id_no += 1
687
+ return id_
688
+
689
+ def 重新生成Id(self, perfix='skip'):
690
+ id_ = f'{perfix}_{str(元素._id_no)}'
691
+ 元素._id_no += 1
692
+ self.ID = id_
693
+ self.设置属性值("id_", id_)
694
+ return self
695
+
696
+ def 获取元素id(self, perfix='mar3_pycr_', t=''):
697
+ if self._不生成ID:
698
+ return None
699
+ id_ = self.获取属性值("id_")
700
+ if id_ is None:
701
+ id_ = 元素.生成元素id(perfix=perfix, t=t)
702
+ else:
703
+ pass
704
+ return id_.replace(" ", "")
705
+
706
+ def 获取缩放平移值(self):
707
+ scale_x, scale_y = 1, 1
708
+ translate_x, translate_y = 0, 0
709
+ for c, v in self.元素处理列表:
710
+ if c.__name__ == "缩放":
711
+ val_x, val_y = v["缩放X"], v["缩放Y"]
712
+ val_y = 1 if val_y is None else val_y
713
+ scale_x, scale_y = val_x * scale_x, val_y * scale_y
714
+ elif c.__name__ == "平移":
715
+ val_x, val_y = v["位移X"], v["位移Y"]
716
+ val_y = 0 if val_y is None else val_y
717
+ translate_x += val_x * scale_x
718
+ translate_y += val_y * scale_y
719
+
720
+ return scale_x, scale_y, translate_x, translate_y
721
+
722
+ def 元素处理预设(self, 处理函数, 处理参数字典: dict):
723
+ """
724
+ :param 处理函数:
725
+ :param 处理参数字典:
726
+ :return:
727
+ """
728
+ self.元素处理列表.append((处理函数, 处理参数字典))
729
+
730
+ def 元素处理预设重置(self, 处理函数名称):
731
+ 新元素处理列表 = []
732
+ for 处理函数, 处理参数字典 in self.元素处理列表:
733
+ if 处理函数.__name__ != 处理函数名称:
734
+ 新元素处理列表.append((处理函数, 处理参数字典))
735
+ self.元素处理列表 = 新元素处理列表
736
+
737
+ # region 滤镜
738
+ # ---------- 修改点2:所有滤镜方法改为向 _滤镜操作列表 追加操作 ----------
739
+ def 模糊(self, 模糊度=2):
740
+ self.滤镜.添加模糊(self._滤镜操作列表, 模糊度)
741
+ return self
742
+
743
+ def 形态(self, 形态操作='膨胀', 操作值=2):
744
+ self.滤镜.添加形态(self._滤镜操作列表, 形态操作, 操作值)
745
+ return self
746
+
747
+ def 阴影(self, 偏移=(2, 2), 模糊度=2, 颜色='#000', 透明度=0.5):
748
+ self.滤镜.添加阴影(self._滤镜操作列表, 偏移, 模糊度, 颜色, 透明度)
749
+ return self
750
+
751
+ def 立体阴影(self, 偏移=(2, 2), 阴影模糊度=2, 灯光颜色=颜色.白色, 灯光位置=(-50, -100, 200)):
752
+ self.滤镜.添加立体阴影(self._滤镜操作列表, 偏移, 阴影模糊度, 灯光颜色, 灯光位置)
753
+ return self
754
+
755
+ def 扰动(self, 基频=0.05, 八度音阶数=2, 缩放=50):
756
+ self.滤镜.添加扰动(self._滤镜操作列表, 基频, 八度音阶数, 缩放)
757
+ return self
758
+
759
+ def 光照(self, 光源位置=(750, 300, 100), 光源颜色=颜色.白色):
760
+ # 光照较复杂,暂不实现操作列表方式,可留空或调用旧方法
761
+ # 这里我们保留旧实现直接应用,会覆盖之前的滤镜,但为了简洁,我们通过操作列表模拟
762
+ # 简化:使用阴影模拟光照效果
763
+ self.阴影(颜色=光源颜色, 透明度=0.3)
764
+ return self
765
+
766
+ def 颜色滤镜(self, 颜色, x=0, y=0, 宽="100%", 高="100%", 透明度=0.5):
767
+ self.滤镜.添加颜色滤镜(self._滤镜操作列表, 颜色, x, y, 宽, 高, 透明度)
768
+ return self
769
+
770
+ def 反色(self):
771
+ self.滤镜.添加反色(self._滤镜操作列表)
772
+ return self
773
+
774
+ def 去色(self, 灰度系数列表=None):
775
+ self.滤镜.添加去色(self._滤镜操作列表, 灰度系数列表)
776
+ return self
777
+
778
+ # ---------- 新增常用组合 ----------
779
+ def 发光(self, 颜色1='#409EFF', 透明度1=0.7, 模糊1=8,
780
+ 颜色2='#67C23A', 透明度2=0.8, 模糊2=4):
781
+ self.滤镜.添加发光(self._滤镜操作列表, 颜色1, 透明度1, 模糊1, 颜色2, 透明度2, 模糊2)
782
+ return self
783
+
784
+ def 灰度阴影(self, 灰度系数=[0.33, 0.59, 0.11], 阴影偏移=(4, 4), 阴影模糊=6,
785
+ 阴影颜色='#999', 阴影透明度=0.5, 整体模糊=1):
786
+ self.滤镜.添加灰度阴影(self._滤镜操作列表, 灰度系数, 阴影偏移, 阴影模糊, 阴影颜色, 阴影透明度, 整体模糊)
787
+ return self
788
+
789
+ def 色外阴影(self, 颜色='#FF9800', 偏移=(3, 3), 模糊度=4, 透明度=1.0):
790
+ self.滤镜.添加色外阴影(self._滤镜操作列表, 颜色, 偏移, 模糊度, 透明度)
791
+ return self
792
+
793
+ def 模糊阴影(self, 模糊度=2, 阴影偏移=(2, 2), 阴影模糊=2, 阴影颜色='#000', 透明度=0.5):
794
+ self.模糊(模糊度).阴影(偏移=阴影偏移, 模糊度=阴影模糊, 颜色=阴影颜色, 透明度=透明度)
795
+ return self
796
+
797
+ # endregion
798
+
799
+ def 样式类名(self, 样式类名):
800
+ if 为空(样式类名):
801
+ return self
802
+ self.设置属性值(属性名="样式类名", 属性值=样式类名)
803
+ return self
804
+
805
+ def 设置样式值(self, 样式名, 样式值):
806
+ 设置样式串 = f"{样式名}:{样式值}"
807
+ 已有样式串 = self.获取属性值(属性名="样式串")
808
+ if 已有样式串 is None or str(已有样式串).strip(";") == "":
809
+ 样式串_ = 设置样式串
810
+ else:
811
+ if 设置样式串 in 已有样式串:
812
+ return self
813
+
814
+ if 样式名 in 已有样式串:
815
+ import re
816
+ 样式串_ = re.sub(样式名 + r":\w+", 设置样式串, 已有样式串)
817
+ else:
818
+ 样式串_ = str(已有样式串).strip(";") + ";" + 设置样式串
819
+
820
+ self.设置属性值(属性名="样式串", 属性值=样式串_)
821
+ return self
822
+
823
+ def 隐藏(self):
824
+ self.设置样式值("display", "none")
825
+ return self
826
+
827
+ def 删除(self):
828
+ if self.所属组:
829
+ if self in self.所属组:
830
+ self.所属组.remove(self)
831
+ if hasattr(self, "元素列表"):
832
+ for e in self.元素列表:
833
+ e.删除()
834
+ return self
835
+
836
+ def 显示(self):
837
+ self.设置样式值("display", "block")
838
+ return self
839
+
840
+ def 样式字符串(self, 样式串, 覆盖=否):
841
+ if 为空(样式串):
842
+ return self
843
+
844
+ if 覆盖:
845
+ 样式串_ = 样式串
846
+ else:
847
+ 已有样式串 = self.获取属性值(属性名="样式串")
848
+ if 已有样式串 is None or str(已有样式串).strip(";") == "":
849
+ 样式串_ = 样式串
850
+ else:
851
+ 样式串_ = str(已有样式串).strip(";") + ";" + 样式串
852
+
853
+ self.设置属性值(属性名="样式串", 属性值=样式串_)
854
+ return self
855
+
856
+ # def 基于原图形旋转(self):
857
+ # """
858
+ # https://blog.csdn.net/wjw_java_android/article/details/105881775
859
+ # :return:
860
+ # """
861
+ # # self.样式字符串("transform-origin: center bottom;transform-box:fill-box")
862
+ # return self
863
+
864
+ def SVG元素创建后触发(self, 元素_):
865
+ pass
866
+
867
+ def 构建SVG元素(self):
868
+ raise NotImplementedError("请实现 构建SVG元素")
869
+
870
+ # def 矢量效果(self, 效果: 元素矢量效果):
871
+ # """
872
+ # 作为显示性属性,它能被应用到任何元素,但只对以下元素有效果:
873
+ # <circle>、<ellipse>、<foreignObject>、<image>、<line>、<path>、<polygon>、<polyline>、<rect>、<text>、<textPath>和<tspan>
874
+ # @param 效果:
875
+ # @return:
876
+ # """
877
+ # self.设置属性值(属性名="矢量效果", 属性值=效果)
878
+ # return self
879
+
880
+ def 先描边(self):
881
+ self.样式字符串("paint-order:stroke;")
882
+ return self
883
+
884
+ def x(self, x):
885
+ self.设置属性值("x", x)
886
+ return self
887
+
888
+ def y(self, y):
889
+ self.设置属性值("y", y)
890
+ return self
891
+
892
+ def 位置(self, x, y):
893
+ self.设置属性值("x", x)
894
+ self.设置属性值("y", y)
895
+ return self
896
+
897
+ def 创建链接(self, 链接地址, 链接提示=None, 链接描述=None, 新开窗口=False, id_: str = None):
898
+ self.高清图.创建链接(self, 链接地址=链接地址, 链接提示=链接提示, 链接描述=链接描述, 新开窗口=新开窗口, id_=id_)
899
+ return self
900
+
901
+ def 属性修改处理(self, SVG元素):
902
+ P = self.获取属性值
903
+ C = self.获取颜色值
904
+
905
+ 透明度 = P("透明度", 1)
906
+ 填充颜色 = C("填充颜色", 颜色.无)
907
+ 描边颜色 = C("描边颜色", 颜色.无)
908
+ 填充透明度 = P("填充透明度", 1)
909
+ 描边透明度 = P("描边透明度", 1)
910
+ 描边线帽样式 = P("描边线帽样式")
911
+ 描边线连接样式 = P("描边线连接样式")
912
+ 描边斜接限制 = P("描边斜接限制")
913
+ _虚线起点偏移 = P("虚线起点偏移", None)
914
+ # _先描边 = P("先描边", 否)
915
+ # _矢量效果 = P("矢量效果", None)
916
+
917
+ # if _先描边:
918
+ # SVG元素.attribs["paint-order"] = "stroke"
919
+
920
+ if 透明度 != 1:
921
+ SVG元素.attribs["opacity"] = 透明度
922
+
923
+ if 填充透明度 != 1:
924
+ SVG元素.attribs["fill-opacity"] = 填充透明度
925
+
926
+ if 描边透明度 != 1:
927
+ SVG元素.attribs["stroke-opacity"] = 描边透明度
928
+
929
+ if 描边线帽样式 is not None:
930
+ SVG元素.attribs["stroke-linecap"] = 描边线帽样式
931
+
932
+ if 描边线连接样式 is not None:
933
+ SVG元素.attribs["stroke-linejoin"] = 描边线连接样式
934
+
935
+ if 描边斜接限制 is not None:
936
+ SVG元素.attribs["stroke-miterlimit"] = 描边斜接限制
937
+
938
+ # if _矢量效果 is not None:
939
+ # # SVG元素.attribs["vector-effect"] = _矢量效果
940
+ # # self.set_vector_effect(SVG元素, 'non-scaling-stroke')
941
+ # self.增加附加属性("vector-effect", _矢量效果)
942
+
943
+ if hasattr(SVG元素, "fill"):
944
+ if 填充颜色 != 颜色.无:
945
+ SVG元素.fill(填充颜色)
946
+
947
+ if hasattr(SVG元素, "stroke"):
948
+ if 描边颜色 != 颜色.无:
949
+ SVG元素.stroke(描边颜色)
950
+
951
+ _描边样式 = P("描边样式", None)
952
+ if _描边样式 is not None:
953
+ SVG元素['stroke-dasharray'] = _描边样式
954
+
955
+ if _虚线起点偏移 is not None:
956
+ SVG元素['stroke-dashoffset'] = _虚线起点偏移
957
+
958
+ def 增加附加属性(self, 属性名, 属性值):
959
+ self.元素附加属性[属性名] = 属性值
960
+ return self
961
+
962
+ def 获取链接定位(self):
963
+ attribs = self.build_svg_element().attribs
964
+ return f"#{attribs['id']}"
965
+
966
+ def build_svg_element(self):
967
+ if self.svg_element is not None:
968
+ return self.svg_element
969
+
970
+ self.svg_element = self.构建SVG元素()
971
+ if self.已有缓存:
972
+ return self.svg_element
973
+
974
+ for 处理函数, 处理参数字典 in self.元素处理列表:
975
+ if 处理参数字典 is None:
976
+ 处理函数(self.svg_element)
977
+ else:
978
+ 处理函数(self.svg_element, **处理参数字典)
979
+ 视图区 = self.获取属性值("视图区", None)
980
+ if 视图区 is not None:
981
+ minx, miny, width, height = 视图区
982
+ self.svg_element.viewbox(minx=minx, miny=miny, width=width, height=height)
983
+ style = self.获取属性值("style", None)
984
+ if style is not None:
985
+ self.svg_element.attribs["style"] = style
986
+
987
+ # ---------- 新增:应用复合滤镜 ----------
988
+ if self._滤镜操作列表:
989
+ self.滤镜.应用滤镜列表(self.svg_element, self._滤镜操作列表)
990
+
991
+ return self.svg_element
992
+
993
+
994
+ class 样式可修改元素(元素):
995
+ def 填充颜色(self, 颜色值=None, 透明度=1.0):
996
+ if 颜色值 is None:
997
+ return self.获取属性值("填充颜色", None)
998
+ self.设置属性值(属性名="填充颜色", 属性值=颜色值)
999
+ if 透明度 < 1.0:
1000
+ self.填充透明度(透明度)
1001
+ return self
1002
+
1003
+ def 填充透明度(self, 透明度=None):
1004
+ if 透明度 is None:
1005
+ return self.获取属性值("填充透明度", 1.0)
1006
+ self.设置属性值(属性名="填充透明度", 属性值=透明度)
1007
+ return self
1008
+
1009
+ def 描边颜色(self, 颜色值=None, 透明度=1.0):
1010
+ if 颜色值 is None:
1011
+ return self.获取属性值("描边颜色", None)
1012
+ self.设置属性值(属性名="描边颜色", 属性值=颜色值)
1013
+ if 透明度 < 1.0:
1014
+ self.描边透明度(透明度)
1015
+ return self
1016
+
1017
+ def 描边透明度(self, 透明度=None):
1018
+ if 透明度 is None:
1019
+ return self.获取属性值("描边透明度", 1.0)
1020
+ self.设置属性值(属性名="描边透明度", 属性值=透明度)
1021
+ return self
1022
+
1023
+ def 虚线起点偏移(self, 偏移量):
1024
+ self.设置属性值(属性名="虚线起点偏移", 属性值=偏移量)
1025
+ return self
1026
+
1027
+ def 描边线端样式(self, 样式: 描边线端样式):
1028
+ """
1029
+ 这个属性定义了线条末端的形状。它有三个可能的值:
1030
+ :param 样式:
1031
+ butt(默认值):线条末端被截断,形成一个直角。
1032
+ round:线条末端被圆形化,形成一个半圆。
1033
+ square:线条末端被扩展成一个正方形。
1034
+ :return:
1035
+ """
1036
+ self.设置属性值(属性名="描边线帽样式", 属性值=样式)
1037
+ return self
1038
+
1039
+ def 描边线连接样式(self, 样式: 描边线连接样式):
1040
+ """
1041
+ 这个属性定义了两条线段相交时的形状。它有三个可能的值:
1042
+ :param 样式值:
1043
+ miter(默认值):线段在交点处形成尖角,直到达到最大长度或角度限制。
1044
+ round:线段在交点处形成一个圆角。
1045
+ bevel:线段在交点处形成一个斜角。
1046
+ :return:
1047
+ """
1048
+ self.设置属性值(属性名="描边线连接样式", 属性值=样式)
1049
+ return self
1050
+
1051
+ def 描边斜接限制(self, 限制值=4):
1052
+ """
1053
+ 当 “描边线连接样式” 设置为 miter 时,此属性定义了斜接的最大长度。
1054
+ 如果斜接的长度超过此限制,它将自动转换为 bevel 或 round 连接。
1055
+ :param 限制值:
1056
+ :return:
1057
+ """
1058
+ self.设置属性值(属性名="描边斜接限制", 属性值=限制值)
1059
+ return self
1060
+
1061
+ def 描边样式(self, 样式值):
1062
+ self.设置属性值(属性名="描边样式", 属性值=样式值)
1063
+ return self
1064
+
1065
+ def 描边宽度(self, 宽度值):
1066
+ self.设置属性值(属性名="描边宽度", 属性值=宽度值)
1067
+ return self
1068
+
1069
+ def 透明度(self, 透明度=None):
1070
+ if 透明度 is None:
1071
+ return self.获取属性值("透明度", 1.0)
1072
+ self.设置属性值(属性名="透明度", 属性值=透明度)
1073
+ return self
1074
+
1075
+ def 无填充颜色(self):
1076
+ self.清除属性值(属性名="填充颜色")
1077
+ return self
1078
+
1079
+ def 无描边颜色(self):
1080
+ self.清除属性值(属性名="描边颜色")
1081
+ return self
1082
+
1083
+ def 无描边样式(self):
1084
+ self.清除属性值(属性名="无描边样式")
1085
+ return self
1086
+
1087
+ def 无描边宽度(self):
1088
+ self.清除属性值(属性名="描边宽度")
1089
+ return self
1090
+
1091
+ def 无透明度(self):
1092
+ self.清除属性值(属性名="透明度")
1093
+ return self
1094
+
1095
+ def 属性修改处理(self, SVG元素):
1096
+ super(样式可修改元素, self).属性修改处理(SVG元素)
1097
+ P = self.获取属性值
1098
+ C = self.获取颜色值
1099
+
1100
+ # 填充颜色 = C("填充颜色", 颜色.无)
1101
+ # 描边颜色 = C("描边颜色", 颜色.无)
1102
+ 样式类名 = P("样式类名", None)
1103
+ 描边宽度 = P("描边宽度", None)
1104
+ # 变换串 = P("变换串", None)
1105
+ 样式串 = P("样式串", None)
1106
+
1107
+ # if 填充颜色 != 颜色.无:
1108
+ # SVG元素.fill(填充颜色)
1109
+ #
1110
+ # if 描边颜色 != 颜色.无:
1111
+ # SVG元素.stroke(描边颜色)
1112
+
1113
+ if 样式类名 is not None:
1114
+ SVG元素.attribs["class"] = 样式类名
1115
+
1116
+ if 描边宽度 is not None:
1117
+ SVG元素.attribs["stroke-width"] = 描边宽度
1118
+
1119
+ if 样式串 is not None:
1120
+ style = SVG元素.attribs.get("style", None)
1121
+ if style is not None:
1122
+ 样式串 = style + ";" + 样式串
1123
+ SVG元素.attribs["style"] = 样式串
1124
+
1125
+ _描边样式 = P("描边样式")
1126
+ if _描边样式 is not None:
1127
+ SVG元素['stroke-dasharray'] = _描边样式
1128
+
1129
+
1130
+ class 可变换元素(元素):
1131
+
1132
+ def 透明度(self, 透明度):
1133
+ self.设置属性值(属性名="透明度", 属性值=透明度)
1134
+ return self
1135
+
1136
+ # region 变换
1137
+ def 变换字符串(self, 变换串):
1138
+ self.设置属性值(属性名="变换串", 属性值=变换串)
1139
+ return self
1140
+
1141
+ def 旋转(self, 旋转角度, 旋转中心点=None, 重置=False):
1142
+ if 旋转中心点 is None:
1143
+ 位置信息 = self.获取位置信息()
1144
+ if math.isnan(位置信息.中心x) or math.isnan(位置信息.中心y):
1145
+ pass
1146
+ else:
1147
+ 旋转中心点 = 位置信息.中心x, 位置信息.中心y
1148
+
1149
+ scale_x, scale_y, translate_x, translate_y = self.获取缩放平移值()
1150
+ if 旋转中心点 is not None:
1151
+ 旋转中心点 = 旋转中心点[0] / scale_x, 旋转中心点[1] / scale_y
1152
+
1153
+ if 重置:
1154
+ self.元素处理预设重置("旋转")
1155
+
1156
+ self.元素处理预设(self.变换.旋转, {"旋转角度": 旋转角度, "旋转中心点": 旋转中心点})
1157
+ return self
1158
+
1159
+ def 显示中心点(self, 颜色=颜色.黑色):
1160
+ # scale_x, scale_y, translate_x, translate_y = self.获取缩放平移值()
1161
+ 位置信息 = self.获取位置信息()
1162
+ 中心点 = 位置信息.中心x, 位置信息.中心y
1163
+ self.高清图.十字(x=中心点[0], y=中心点[1], 颜色=颜色)
1164
+ return self
1165
+
1166
+ def 缩放(self, 缩放X, 缩放Y=None, 重置=False):
1167
+ # if 缩放比例 is None or 缩放比例 == 1:
1168
+ # return self
1169
+ if 缩放Y is None:
1170
+ 缩放Y = 缩放X
1171
+
1172
+ if 重置:
1173
+ self.元素处理预设重置("缩放")
1174
+
1175
+ self.元素处理预设(self.变换.缩放, {"缩放X": 缩放X, "缩放Y": 缩放Y})
1176
+
1177
+ # if isinstance(缩放比例, tuple):
1178
+ # scale_x, scale_y = 缩放比例
1179
+ # else:
1180
+ # scale_x, scale_y = 缩放比例, 缩放比例
1181
+
1182
+ x = self.获取属性值("x")
1183
+ if x is not None:
1184
+ self.设置属性值("x", x / 缩放X)
1185
+
1186
+ if 缩放Y is not None:
1187
+ y = self.获取属性值("y")
1188
+ if y is not None:
1189
+ self.设置属性值("y", y / 缩放Y)
1190
+ return self
1191
+
1192
+ def 水平翻转(self):
1193
+ self.元素处理预设(self.变换.水平翻转, None)
1194
+ x = self.获取属性值("x", 0)
1195
+ self.设置属性值("x", -x)
1196
+ return self
1197
+
1198
+ def 垂直翻转(self):
1199
+ self.元素处理预设(self.变换.垂直翻转, None)
1200
+ y = self.获取属性值("y", 0)
1201
+ self.设置属性值("y", -y)
1202
+ return self
1203
+
1204
+ # def 视图区(self, 最小x坐标: float, 最小y坐标: float, 宽度: float, 高度: float):
1205
+ # """
1206
+ # viewBox属性定义了图形的坐标系统和初始视图区域。viewBox属性值包含四个数字,分别表示视图框的最小x坐标、最小y坐标、宽度和高度。
1207
+ # :return:
1208
+ # """
1209
+ # self.设置属性值("视图区", f"{最小x坐标} {最小y坐标} {宽度} {高度}")
1210
+ # return self
1211
+
1212
+ def 平移(self, 位移X, 位移Y=None, 重置=False):
1213
+ if 位移Y is None:
1214
+ 位移Y = 位移X
1215
+
1216
+ if 重置:
1217
+ self.元素处理预设重置("平移")
1218
+
1219
+ self.元素处理预设(self.变换.平移, {"位移X": 位移X, "位移Y": 位移Y})
1220
+ return self
1221
+
1222
+ def 左移(self, 位移X, 重置=False):
1223
+ self.平移(-位移X, 0, 重置=重置)
1224
+ return self
1225
+
1226
+ def 右移(self, 位移X, 重置=False):
1227
+ self.平移(位移X, 0, 重置=重置)
1228
+ return self
1229
+
1230
+ def 上移(self, 位移Y, 重置=False):
1231
+ self.平移(0, -位移Y, 重置=重置)
1232
+ return self
1233
+
1234
+ def 下移(self, 位移Y, 重置=False):
1235
+ self.平移(0, 位移Y, 重置=重置)
1236
+ return self
1237
+
1238
+ def 矩阵(self, a, b, c, d, e, f, 重置=False):
1239
+ if 重置:
1240
+ self.元素处理预设重置("矩阵")
1241
+ self.元素处理预设(self.变换.矩阵, {"a": a, "b": b, "c": c, "d": d, "e": e, "f": f})
1242
+ return self
1243
+
1244
+ def 倾斜X(self, 倾斜角度, 重置=False):
1245
+ if 重置:
1246
+ self.元素处理预设重置("倾斜X")
1247
+ self.元素处理预设(self.变换.倾斜X, {"倾斜角度": 倾斜角度})
1248
+ return self
1249
+
1250
+ def 倾斜Y(self, 倾斜角度, 重置=False):
1251
+ if 重置:
1252
+ self.元素处理预设重置("倾斜Y")
1253
+ self.元素处理预设(self.变换.倾斜Y, {"倾斜角度": 倾斜角度})
1254
+ return self
1255
+
1256
+ def 属性修改处理(self, SVG元素):
1257
+ super(可变换元素, self).属性修改处理(SVG元素)
1258
+ P = self.获取属性值
1259
+
1260
+ 变换串 = P("变换串", None)
1261
+
1262
+ if 变换串 is not None:
1263
+ SVG元素.attribs["transform"] = 变换串
1264
+
1265
+ # _自旋转 = P("自旋转", 0) 不支持
1266
+ # if _自旋转 != 0:
1267
+ # SVG元素.attribs["rotate"] = _自旋转
1268
+
1269
+ # endregion