HX:?      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      Safe-InferredNone<=KI choose a bit complicated Dim2 definition to make it distinct from size pairs with width and height swapped. Alternatives would be Index.Linear or intentionally complicated Shape types like:Btype Dim0 = () type Dim1 = ((), Size) type Dim2 = ((), Size, Size)Problems with Index.Linear is that it is fixed to Word32 dimensions which causes trouble with negative coordinates that we encounter on rotations.aThe custom shape type requires lots of new definitions but it is certainly the cleanest solution.     None ! ! ! !None "#$%&'()*+, "#$%&'()*+, #$%&"')(*+, "#$%&'()*+, Safe-InferredMeRounds to the smallest number of the form 2^k*j, with k>=0 and 1<=j<=10 that is at least as large as n.,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX,56789:;<=01234>?@A/.BC-DEFGHIJKLSMNOPQRTUVWX(-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX Safe-Inferred0YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0z{|}~bcdefghijklmnopqrstuvwxy_`a\^][ZYYZ[\^]_`abcdefghijklmnopqrstuvwxyz{|}~None=KrotateStretchMove rot mov3 first rotate and stretches the image according to rot and then moves the picture./Should be yet a little bit more efficient than % since it uses a real back transform.Set all scores to zero within a certain border. Otherwise the matching algorithm will try to match strong bars at the borders that are actually digitalization artifacts.For every pixel it computes the distance to the closest point on the image part boundary which lies in any other image. The rationale is that we want to fade an image out, wherever is another image that can take over. Such a closest point can either be a perpendicular point at one of the image edges, or it can be an image corner or an intersection between this image border and another image border. The first kind of points is computed by  and the second kind by W. We simply compute the distances to all special points and chose the minimal distance.                          !"#$%&'()*+,-./01234567789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeefghijklmnopqrstuvwxyz{|}}~4;N     mainOption.Utility KneadShape LinearAlgebraMatchImageBorders ArithmeticOptionMain parseNumberexitFailureMsg fmapArgDescr fmapOptDescrIndex2Shape2IndexTagShapeTagVec2vertical horizontalIx2Dim2Dim1Dim0Size squareShape castToElemPtr unzipShapezipShape verticalVal horizontalVal$fDecomposeVec2 $fComposeVec2$fCVec2$fCVec20$fDecomposeVec20$fComposeVec20$fCVec21$fStorableVec2&absolutePositionsFromPairDisplacementsleastSquaresSelectedlayoutFromPairDisplacementsLocationarrayCFromKneadarrayKneadFromC findBorderpqueueFromBorder locOutside locBorder locInsideprepareLocationsprepareShaping shapePartsGeometryLine2Point2VecvecZerovecAddvecScaleinBox rotatePointrotateStretchMovePointrotateStretchMoveBackPointboundingBoxOfRotatedboundingBoxOfRotatedGen canvasShapelinearIpcubicIp vecScalar linearIpVec cubicIpVecsmooth3 intersect intersectionsgeometryFeaturesgeometryRelations projectPerp distanceSqrdistance linearScaleminimumOverlapAbsFromPortion ceilingPow2ceilingSmooth7ceilingSmooth7_10divideByMaximumPower^!isSmooth7NumberReduceisSmooth7NumberDivpropIsSmooth7NumberceilingSmooth7_100correlationSizedivUppairFromComplex mapComplexmulConjEngineDescription Description EngineSetEngine AccelerateKneadImageangle verbosityoutput outputHard outputShapedoutputShapedHard outputOverlapoutputDistanceMap outputShapeoutputShapeHardqualitymaximumAbsoluteAnglenumberAngleStepsradonTransformsmoothpadSizeminimumOverlapmaximumDifferencefinetuneRotate numberStamps stampSize distanceGamma shapeSmoothArgsoptioninputs defltArgs defltOption defltImageknead accelerategenericoptoptionDescription descriptionaddFileget RotatedImageMaskBoolIdVecExpYUV ColorImage8 ColorImage SymbPlanePlane SmallSizeshape2 readImagevectorStorableFromimageFromArray writeImage writeGreycolorImageExtentfromInt floatFromByte byteFromFloatimageFloatFromByteimageByteFromFloatyuvByteFromFloatcolorImageFloatFromBytecolorImageByteFromFloat fastRound splitFraction ceilingToIntatomDim2atomIx2dim2ix2 fromSize2 indexLimit limitIndicesshiftIndicesHorizshiftIndicesVertvecYUV indexFrac indexFrac1 gatherFrac_ gatherFracrotateStretchMoveCoordsinRange validCoordsrotateStretchMoverotate runRotatebrightnessValuebrightnessPlane rowHistogramtailArr differentiatethefold1AllscoreHistogramrunScoreRotationfindOptimalRotation transpose lowpassVertlowpassnestM lowpassMulti highpassMultipad padCArray clipCArray mapPairIntcorrelatePaddedSimpleCArraycyclicReverse2duntangleCoefficientuntangleSpectra2dcorrelatePaddedComplexCArraycorrelatePaddedCArray liftCArray2fixArrayprepareOverlapMatchingwrapdisplacementMapattachDisplacementsminimumOverlapScoresallOverlapsFromCorrelationallOverlapsRunargmax argmaximumoptimalOverlapshrink shrinkFactorsoptimalOverlapBigclipoverlappingAreaoptimalOverlapBigFineoptimalOverlapBigMultioverlapDifferenceoverlapDifferenceRunoverlap2composeOverlapemptyCountCanvas maskFromBool boolFromMask intFromBooladdToCountCanvasupdateCountCanvasfinalizeCountCanvasdiffAbsdiffWithCanvasfinalizeCountCanvasFloat emptyCanvasaddMaskedToCanvasupdateShapedCanvas maybePlus maskedMinimumgeneratedistanceMapBox outerProductisZeroexpEvenseparateDistanceMapcontainedAnywheredistanceMapContainedpixelCoordinatesdistanceMapPoints distanceMappowdistanceMapGammaemptyWeightedCanvasaddToWeightedCanvasupdateWeightedCanvasfinalizeWeightedCanvasprocessOverlapprocessOverlapRotateprocess rotateTest scoreTestTFCo:R:PatternTupleVec2TFCo:R:DecomposedfVec2