pub const DMN_3_1156: &str = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<definitions xmlns=\"https://www.omg.org/spec/DMN/20230324/MODEL/\"\n namespace=\"https://www.montera.com.au/spec/DMN/1156-range-function\"\n name=\"1156-range-function\"\n id=\"_60ca332b-9d7c-462e-820a-bc7f1ea3896c\">\n\n <description>FEEL built-in function \'range(string)\' in category conversion functions</description>\n\n <inputData name=\"input_001\" id=\"_input_001\">\n <variable name=\"input_001\" typeRef=\"string\"/>\n </inputData>\n\n <decision name=\"decision001\" id=\"_decision001\">\n <!-- basic sanity check to ensure it is operating as a range -->\n <variable name=\"decision001\"/>\n <literalExpression>\n <text>2 in range(\"[1..3]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision001_a\" id=\"_decision001_a\">\n <!-- will parse and have the correct type for number -->\n <variable name=\"decision001_a\"/>\n <literalExpression>\n <text>range(\"[1..3]\") instance of range<number></text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision001_b\" id=\"_decision001_b\">\n <!-- will parse and have the correct type for number (using non-literal) -->\n <variable name=\"decision001_b\"/>\n <literalExpression>\n <text>range(string(\"[1..3]\")) instance of range<number></text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision001_c\" id=\"_decision001_c\">\n <!-- will parse and have the correct type for string -->\n <variable name=\"decision001_c\"/>\n <literalExpression>\n <text>range(\"[\\\"a\\\"..\\\"c\\\"]\") instance of range<string></text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision001_d\" id=\"_decision001_d\">\n <!-- will parse and have the correct type for date -->\n <variable name=\"decision001_d\"/>\n <literalExpression>\n <text>range(\"[@\\\"1970-01-01\\\"..@\\\"1970-01-02\\\"]\") instance of range<date></text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision001_e\" id=\"_decision001_e\">\n <!-- will parse and have the correct type for date and time -->\n <variable name=\"decision001_e\"/>\n <literalExpression>\n <text>range(\"[@\\\"1970-01-01T00:00:00\\\"..@\\\"1970-01-02T00:00:00\\\"]\") instance of range<date and time>\n </text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision001_g\" id=\"_decision001_g\">\n <!-- will parse and have the correct type for time -->\n <variable name=\"decision001_g\"/>\n <literalExpression>\n <text>range(\"[@\\\"00:00:00\\\"..@\\\"00:00:00\\\"]\") instance of range<time></text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision001_h\" id=\"_decision001_h\">\n <!-- will parse and have the correct type for days and time duration -->\n <variable name=\"decision001_h\"/>\n <literalExpression>\n <text>range(\"[@\\\"P1D\\\"..@\\\"P2D\\\"]\") instance of range<days and time duration></text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision001_i\" id=\"_decision001_i\">\n <!-- will parse and have the correct type for years and months duration -->\n <variable name=\"decision001_i\"/>\n <literalExpression>\n <text>range(\"[@\\\"P1Y\\\"..@\\\"P2Y\\\"]\") instance of range<years and months duration></text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision002\" id=\"_decision002\">\n <!-- basic sanity check to ensure it is operating as a range using non-literal-->\n <variable name=\"decision002\"/>\n <literalExpression>\n <text>2 in range(string(\"[1..3]\"))</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision003_a\" id=\"_decision003_a\">\n <!-- parsed range is equal to literal range -->\n <variable name=\"decision003_a\"/>\n <literalExpression>\n <text>range(\"[18..21]\") = [18..21]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision003_b\" id=\"_decision003_b\">\n <!-- parsed range endpoint inclusivity is equal to literal range -->\n <variable name=\"decision003_b\"/>\n <literalExpression>\n <text>range(\"(18..21]\") = (18..21]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision003_c\" id=\"_decision003_c\">\n <!-- parsed range endpoint inclusivity is equal to literal range -->\n <variable name=\"decision003_c\"/>\n <literalExpression>\n <text>range(\"]18..21]\") = ]18..21]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision003_d\" id=\"_decision003_d\">\n <!-- parsed range endpoint inclusivity is equal to literal range -->\n <variable name=\"decision003_d\"/>\n <literalExpression>\n <text>range(\"[18..21)\") = [18..21)</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision003_e\" id=\"_decision003_e\">\n <!-- parsed range endpoint inclusivity is equal to literal range -->\n <variable name=\"decision003_e\"/>\n <literalExpression>\n <text>range(\"[18..21[\") = [18..21[</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision004_e\" id=\"_decision004_e\">\n <!-- closed start endpoint with no value is not valid and gives null -->\n <variable name=\"decision004_e\"/>\n <literalExpression>\n <text>range(\"[..2]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision004_f\" id=\"_decision004_f\">\n <!-- closed end endpoint with no value is not valid and gives null -->\n <variable name=\"decision004_f\"/>\n <literalExpression>\n <text>range(\"[1..]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision005_a\" id=\"_decision005_a\">\n <!-- parsed string range is equal to literal range -->\n <variable name=\"decision005_a\"/>\n <literalExpression>\n <text>range(\"[\\\"a\\\"..\\\"c\\\"]\") = [\"a\"..\"c\"]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision005_b\" id=\"_decision005_b\">\n <!-- parsed date range is equal to literal range -->\n <variable name=\"decision005_b\"/>\n <literalExpression>\n <text>range(\"[@\\\"1970-01-01\\\"..@\\\"1970-01-02\\\"]\") = [@\"1970-01-01\"..@\"1970-01-02\"]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision005_c\" id=\"_decision005_c\">\n <!-- parsed date and time range is equal to literal range -->\n <variable name=\"decision005_c\"/>\n <literalExpression>\n <text>range(\"[@\\\"1970-01-01T00:00:00\\\"..@\\\"1970-01-02T00:00:00\\\"]\") =\n [@\"1970-01-01T00:00:00\"..@\"1970-01-02T00:00:00\"]\n </text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision005_d\" id=\"_decision005_d\">\n <!-- parsed time range is equal to literal range -->\n <variable name=\"decision005_d\"/>\n <literalExpression>\n <text>range(\"[@\\\"00:00:00\\\"..@\\\"00:00:00\\\"]\") = [@\"00:00:00\"..@\"00:00:00\"]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision005_e\" id=\"_decision005_e\">\n <!-- parsed days/weeks duration range is equal to literal range -->\n <variable name=\"decision005_e\"/>\n <literalExpression>\n <text>range(\"[@\\\"P1D\\\"..@\\\"P2D\\\"]\") = [@\"P1D\"..@\"P2D\"]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision005_f\" id=\"_decision005_f\">\n <!-- parsed years/month duration range is equal to literal range -->\n <variable name=\"decision005_f\"/>\n <literalExpression>\n <text>range(\"[@\\\"P1Y\\\"..@\\\"P2Y\\\"]\") = [@\"P1Y\"..@\"P2Y\"]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision006\" id=\"_decision006\">\n <!-- will ignore whitespace when parsing -->\n <variable name=\"decision006\"/>\n <literalExpression>\n <text>range(\" [ 1 .. 3 ] \") = [1..3]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision007_a\" id=\"_decision007_a\">\n <!-- use of date() function literal is permitted -->\n <variable name=\"decision007_a\"/>\n <literalExpression>\n <text>range(\"[date(\\\"1970-01-01\\\")..date(\\\"1970-01-02\\\")]\") = [date(\"1970-01-01\")..date(\"1970-01-02\")]\n </text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision007_b\" id=\"_decision007_b\">\n <!-- use of date() function as non literal is not permitted and gives null -->\n <!-- the usage of string() here causes start endPoint to be non-literal -->\n <variable name=\"decision007_b\"/>\n <literalExpression>\n <text>range(\"[date(string(\\\"1970-01-01\\\"))..date(\\\"1970-01-02\\\")]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision007_c\" id=\"_decision007_c\">\n <!-- use of date() function as non literal is not permitted and gives null -->\n <!-- shows range literal using input data as argument to date() -->\n <variable name=\"decision007_c\"/>\n <informationRequirement>\n <requiredInput href=\"#_input_001\"/>\n </informationRequirement>\n <literalExpression>\n <text>range(\"[date(input_001)..date(\\\"1970-01-02\\\")]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision008_a\" id=\"_decision008_a\">\n <!-- use of date and time() function literal is permitted -->\n <variable name=\"decision008_a\"/>\n <literalExpression>\n <text>range(\"[date and time(\\\"1970-01-01T00:00:00\\\")..@\\\"1970-01-02T00:00:00\\\"]\") =\n [@\"1970-01-01T00:00:00\"..@\"1970-01-02T00:00:00\"]\n </text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision008_b\" id=\"_decision008_b\">\n <!-- use of date and time() function as non literal is not permitted and gives null -->\n <!-- the usage of string() here causes start endPoint to be non-literal -->\n <variable name=\"decision008_b\"/>\n <literalExpression>\n <text>range(\"[date and time(string(\\\"1970-01-01T00:00:00\\\"))..@\\\"1970-01-02T00:00:00\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision008_c\" id=\"_decision008_c\">\n <!-- use of date and time() function as non literal is not permitted and gives null -->\n <!-- shows range literal using input data as argument to date and time() -->\n <variable name=\"decision008_c\"/>\n <informationRequirement>\n <requiredInput href=\"#_input_001\"/>\n </informationRequirement>\n <literalExpression>\n <text>range(\"[date and time(input_001)..@\\\"1970-01-02T00:00:00\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision009_a\" id=\"_decision009_a\">\n <!-- use of time() function literal is permitted -->\n <variable name=\"decision009_a\"/>\n <literalExpression>\n <text>range(\"[time(\\\"00:00:00\\\")..@\\\"00:00:00\\\"]\") = [@\"00:00:00\"..@\"00:00:00\"]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision009_b\" id=\"_decision009_b\">\n <!-- use of time() function as non literal is not permitted and gives null -->\n <!-- the usage of string() here causes start endPoint to be non-literal -->\n <variable name=\"decision009_b\"/>\n <literalExpression>\n <text>range(\"[time(string(\\\"00:00:00\\\"))..@\\\"00:00:00\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision009_c\" id=\"_decision009_c\">\n <!-- use of time() function as non literal is not permitted and gives null -->\n <!-- shows range literal using input data as argument to time() -->\n <variable name=\"decision009_c\"/>\n <informationRequirement>\n <requiredInput href=\"#_input_001\"/>\n </informationRequirement>\n <literalExpression>\n <text>range(\"[time(input_001)..@\\\"00:00:00\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision010_a\" id=\"_decision010_a\">\n <!-- use of duration() function literal is permitted -->\n <variable name=\"decision010_a\"/>\n <literalExpression>\n <text>range(\"[duration(\\\"P1D\\\")..@\\\"P2D\\\"]\") = [@\"P1D\"..@\"P2D\"]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision010_b\" id=\"_decision010_b\">\n <!-- use of duration() function as non literal is not permitted and gives null-->\n <!-- the usage of string() here causes start endPoint to be non-literal -->\n <variable name=\"decision010_b\"/>\n <literalExpression>\n <text>range(\"[duration(string(\\\"P1D\\\"))..@\\\"P2D\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision010_c\" id=\"_decision010_c\">\n <!-- use of duration() function as non literal is not permitted and gives null-->\n <!-- shows range literal using input data as argument to duration() -->\n <variable name=\"decision010_c\"/>\n <informationRequirement>\n <requiredInput href=\"#_input_001\"/>\n </informationRequirement>\n <literalExpression>\n <text>range(\"[duration(input_001)..@\\\"P2D\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision011\" id=\"_decision011\">\n <!-- named argument -->\n <variable name=\"decision011\"/>\n <literalExpression>\n <text>range(from: \"[1..3]\") = [1..3]</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision012\" id=\"_decision012\">\n <!-- invalidly named argument \'fron\' gives null -->\n <variable name=\"decision012\"/>\n <literalExpression>\n <text>range(fron: \"[1..3]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision013_a\" id=\"_decision013_a\">\n <!-- too many arguments gives null -->\n <variable name=\"decision013_a\"/>\n <literalExpression>\n <text>range(\"[1..3]\", \"foo\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision013_b\" id=\"_decision013_b\">\n <!-- too few arguments gives null -->\n <variable name=\"decision013_b\"/>\n <literalExpression>\n <text>range()</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision014\" id=\"_decision014\">\n <!-- invalid type gives null -->\n <variable name=\"decision014\"/>\n <literalExpression>\n <text>range([1..3])</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision015_a\" id=\"_decision015_a\">\n <!-- empty string gives null -->\n <variable name=\"decision015_a\"/>\n <literalExpression>\n <text>range(\"\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision015_b\" id=\"_decision015_b\">\n <!-- whitespace only gives null -->\n <variable name=\"decision015_b\"/>\n <literalExpression>\n <text>range(\" \")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision016\" id=\"_decision016\">\n <!-- non-literal argument provides invalid range string gives null -->\n <variable name=\"decision016\"/>\n <literalExpression>\n <text>range(string(\"\"))</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision017\" id=\"_decision017\">\n <!-- a unary range is not a valid literal range string -->\n <variable name=\"decision017\"/>\n <literalExpression>\n <text>range(\">=10\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision018\" id=\"_decision018\">\n <!-- mismatching endpoint types gives null -->\n <variable name=\"decision018\"/>\n <literalExpression>\n <text>range(\"[1..\\\"b\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision019_a\" id=\"_decision019_sa\">\n <!-- date, and date and time end points are not equivalent and gives null -->\n <variable name=\"decision019_a\"/>\n <literalExpression>\n <text>range(\"[@\\\"1970-01-01\\\"..@\\\"1970-01-02T00:00:00\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision019_b\" id=\"_decision019_b\">\n <!-- date, and date and time end points are not equivalent and gives null -->\n <variable name=\"decision019_b\"/>\n <literalExpression>\n <text>range(\"[@\\\"1970-01-01T00:00:00\\\"..@\\\"1970-01-02\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision020\" id=\"_decision020\">\n <!-- a descending numeric range gives null -->\n <variable name=\"decision020\"/>\n <literalExpression>\n <text>range(\"[3..1]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision021\" id=\"_decision021\">\n <!-- a descending date range gives null -->\n <variable name=\"decision021\"/>\n <literalExpression>\n <text>range(\"[@\\\"1970-01-02\\\"..@\\\"1970-01-01\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision022\" id=\"_decision022\">\n <!-- a descending date time range gives null -->\n <variable name=\"decision022\"/>\n <literalExpression>\n <text>range(\"[@\\\"1970-01-02T00:00:00\\\"..@\\\"1970-01-01T00:00:00\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision023\" id=\"_decision023\">\n <!-- a descending string range gives null -->\n <variable name=\"decision023\"/>\n <literalExpression>\n <text>range(\"[\\\"z\\\"..\\\"a\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision024\" id=\"_decision024\">\n <!-- a descending date duration range gives null -->\n <variable name=\"decision024\"/>\n <literalExpression>\n <text>range(\"[@\\\"P2D\\\"..@\\\"P1D\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision025\" id=\"_decision025\">\n <!-- a descending years duration range gives null -->\n <variable name=\"decision025\"/>\n <literalExpression>\n <text>range(\"[@\\\"P2Y\\\"..@\\\"P1Y\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision026\" id=\"_decision026\">\n <!-- a descending time range gives null -->\n <variable name=\"decision026\"/>\n <literalExpression>\n <text>range(\"[@\\\"02:00:00\\\"..@\\\"01:00:00\\\"]\")</text>\n </literalExpression>\n </decision>\n\n <decision name=\"decision027\" id=\"_decision027\">\n <!-- both null endpoints gives null -->\n <variable name=\"decision027\"/>\n <literalExpression>\n <text>range(\"[null..null]\")</text>\n </literalExpression>\n </decision>\n\n</definitions>\n";