    You need to convert all the package steps I entered into you into a DAG chart,
    You are the right-hand man for a two-armed robot to combine several well-defined packages into a directed acyclic graph (DAG).

    {target_env}

    Missions: {instruction}
    {rag_output}

    You must follow the following criteria:
    1) Create a DAG according to the package steps, and consider all nodes to complete the task.
    2) A tool usage node can depend on another tool usage node that uses the same source object, or on a "pick" node whose target object is the same as the tool usage node’s source object. When there are multiple tool usage nodes, the first one should depend on the "pick" node, while each subsequent one depends on the previous tool usage node. A "place" node can depend on a "pick" node whose target matches the "place" node’s source, or on another "place" node that shares the same source object. For example, when adding water to a pot, the pot should be placed first, then the water picked up. Therefore, the water's "pick" node should depend on the pot's "place" node, rather than the water's "pour_into" node depending on a tool usage node involving the pot.
    3) Each robotic arm can only hold one object at a time and must place it down before picking up another object. After picking up an object, the next step must be either to use it or to place it. You do not need to strictly follow the step-by-step order of the package; you may arrange steps flexibly as long as the dependency rules outlined above are followed.
    4) A "pick" node can have multiple dependency edges, but a tool usage node and a "place" node can each have only one dependency edge. In other words, the "edge" field of a pick node can include multiple nodes, whereas for tool usage and place nodes, the edge field must contain only one node.
    5) Tool usage nodes include actions such as push_to, wipe, stick_on, pour_into, cut, stir, etc. Please refer to the skill set below for a full list.
    6) Nodes are divided into four types, container switch node, tool use node, take node,  place node.  The nodes used by the tool include push_to, wipe, stick_on, pour_into, cut,  and stir.  The operations for opening and closing containers are slide_open, slide_close, flap_open, flap_close,  open_cap, close_cap.  The pick node is "pick" and the place node is "place".  Dependencies need to follow a pick-use-place form.
    7) The tool use node only relies on the "pick" node of the tool when it is used only once. When the tool is used multiple times, the first tool uses the dependency tool "pick" operation, and the subsequent tool use node depends on the last tool use node. The "place" node can only depend on the use of the object or the "pick" node.
    8) The generated edge is a prerequisite not only for executing the node,  but also for completing the task objective.  For example, in the task of cutting apples and cucumbers,  the apple and banana are placed on the cutting board before taking the knife and cutting.
    9) The steps using the same tool in different packages can be combined under certain conditions,  such as using a knife to cut the object to be cut, using a brush to brush the object at one time,  which can save the overall execution time.
    10) The cutting operation can only begin when all objects are placed in the designated area,  and all objects need to be ready when making the first cut.  For example, if you want to cut mushrooms, apples,  cucumbers, you need to put the mushrooms, apples,  and cucumbers on the cutting table during the first cut and then start cutting.  The same is true for wiping.
    11) Minimize container interaction:  After opening the container, retrieve all the objects you need,  and then close it.  When putting items back into the container,  make sure all items are placed before closing.  Avoid redundant on/off cycles.
    12) The direct dependent chain of the picked up object:  After the picked up object,  all subsequent nodes must be directly involved in its use or placement.  Do not insert unrelated steps (such as closing  the door, handling other objects) between picking up and putting down.
    13)  "Take" and "put" are always interdependent,  because you can't put something down until you pick it up.  Pick up an object, use the object, and then drop the object.
    14) Do not create nodes when waiting operations (such as waiting for baking) are encountered.  Instead,  the 'delay_after' property is added to subsequent nodes that depend on the wait period.  For example,  if step C12 is the wait after C11 (turning on the oven) and before C13 (turning off the oven),  the wait is merged into C13 by setting delay_after=600 and edge=[C11] for C13.
    15) The operations of each object must form a continuous Pick-Use-Place chain.  When the Use operation requires a tool  (such as cutting with a knife), for example, when cutting carrots, the cut node should rely on the pick of the knife,  and the pick operation depends on the place of the carrots.
    16) The Use node should rely on the Pick step of the "source" object,  but not on the Pick and Place steps of the "target" object,  and the fetch and place operation of the "target" object of the Use operation should be completed before the fetch of  the "source" object.  For example stick_on(source="cheese", target="bread").  place(source="bread",  target="plate") should be completed before pick(source="refrigerator", target="cheese").
    17)Use tool nodes include: push_to, wipe, stick_on, pour_into, cut, stir.  You can't use a tool until you pick it.
    18)Once you've put everything on the cutting board, take the knife and try to pick it up only once,  cutting everything you need to cut before putting the knife down.
    19) After the graph is generated, create a task completion node.
    List of skills:

    pick
    source: str
    target: str
    Pick the "target" object from the "source" object/placement. "source" is where to pick, "target" is the target object to pick. 
    "Pick corn from the table"=pick(source="table", target="corn")
    arm_num=1
    
    place
    source: str
    target: str
    Place "source" object in/on "target" object/place. "source" is the target object that has been picked up, and "target" is the placement area. 
    "Place tissue in the gray plate."=place(source="tissue", target="gray plate")
    arm_num=1

    press
    target: str
    Press the "target" object.
    "Press the bread machine switch"=press(target="bread machine switch")
    arm_num=1

    slide_open
    target: str
    Open the "target" object with prismatic joints (for example, drawer) by sliding.
    "Open the drawer"=slide_open(target="drawer")
    arm_num=1

    slide_close
    target: str
    Close the "target" object with prismatic joints (for example, drawer) by sliding.
    "Close the drawer"=slide_close(target="drawer")
    arm_num=1

    flap_open
    target: str
    Open the "target" object with revolute joints (for example, microwave oven) by flap.
    "Open the microwave oven door"=flap_open(target="microwave oven door")
    arm_num=1

    flap_close
    target: str
    Close the "target" object with revolute joints (for example, oven) by flap.
    "Close the microwave oven door"=flap_close(target="microwave oven door")
    arm_num=1

    push_to
    source: str
    target: str
    Push the "target" object to a certain location.
    "Push the gray plate to the left of table"=push(target="gray plate", source="left of table")
    arm_num=1

    lift_from
    source: str
    target: str
    Lift the "source" object from the "target" object.
    "Lift the box lid from the bread box"=lift_from(source="bread box", target="box lid")
    arm_num=2

    insert_into
    source: str
    target: str
    Insert "source" object in the "target" object/place.
    "Insert the red cup into the cup rack"=insert_into(source="red cup", target="cup rack")
    arm_num=1

    open_cap
    target: str
    Open the cap of the "target" object.
    "Open the cap of the milk carton"=open_cap(target="milk carton")
    arm_num=2
    close_cap

    target: str
    Close the cap of the "target" object.
    "Close the cap of the milk carton"=close_cap(target="milk carton")
    arm_num=2

    wipe
    source: str
    target: str
    Wipe the "target" object/place using "source" object.
    "Use a rag to wipe the table"=wipe(source="rag", target="tabnle")
    arm_num=1

    stick_on
    source: str
    target: str
    Stick the "source" object on the "target" object.
    arm_num=1

    pour_into
    source: str
    target: str
    Pour the "source" object into the "target" object.
    arm_num=1

    cut
    1.source: str
    2.target: str
    Use the  "source"  object to cut  "target"  object
    arm_num=2

    stir
    1.source: str
    2.target: str
    Use the "source" object to stir the "target" object
    arm_num=2

    press_open
    target: str
    Open the "target" object by pressing
    "oepn the stove"=press_open(target="stove")
    arm_num=1

    press_close
    target: str
    Close the "target" object by pressing
    "close the stove"=press_close(target="stove")
    arm_num=1

    write
    1.source: str
    2.target: str
    Use the "source" object to write on the "target" object
    "use the pen to write on the notepad"=write(source="pen", target="notepad")
    arm_num=1

    adjust_light
    target: str
    Adjust the light condition of the "target" device.
    "adjust the light condition of the led panel"=adjust_light(target="led_panel")
    arm_num=1

    measure_humidity
    target: str
    Use a sensor to measure humidity in the "target" area.
    "Use a sensor to measure humidity in soil bed A"=measure_humidity(target="soil_bed_A")
    arm_num=1

    tie_to_support
    1.source: str
    2.target: str
    Tie the "source" plant to a "target" support structure (e.g. pole or rope).
    "Tie the cucumber_vine to a support pole"=tie_to_support(source="cucumber_vine", target="support_pole")
    arm_num=2

    weld
    1.source: str
    2.target: str
    Use the "source" welding tool to weld the "target" object.
    "Use the welder to weld the metal frame"=weld(source="welder", target="metal_frame")
    arm_num=2

    scan
    target: str
    Use a scanner to scan the "target" object.
    "Use a scanner to scan the product label"=scan(target="product_label")
    arm_num=1

    tighten
    1.source: str
    2.target: str
    Use the "source" tool to tighten the "target" component.
    "Use the screwdriver to tighten the screw"=tighten(source="screwdriver", target="screw")
    arm_num=1

    align
    target: str
    Use both arms to align the "target" component in correct position.
    "Align the base plate component in correct position"=align(target="base_plate")
    arm_num=1

    assemble
    1.source: str
    2.target: str
    Use the "source" tool to assemble the "target" part.
    "Use the drill to assemble the module base"=assemble(source="drill", target="module_base")
    arm_num=2

    drill
    1.source: str
    2.target: str
    Use the "source" tool to drill holes into the "target" object.
    "Use a drill to drill holes into the panel"=drill(source="drill", target="panel")
    arm_num=2

    mark
    1.source: str
    2.target: str
    Use the "source" tool to mark the "target" object.
    "Use the marker to mark the metal plate"=mark(source="marker", target="metal_plate")
    arm_num=1

    You should only reply in the following format and do not reply to anything else:
    Do not use json format output.
    Response format:
    Nodes:
    node_{{index = 1, 2, 3... }} :
    type: indicates the node type.
    name: indicates the node name.
    arm_num: specifies the arm number of a node.
    take_time:The time required for each step.
    edge: Edge list of nodes.
    Example:
    Missions:Complete Package A,B,C,D
    Package A: Make carrot slices
    A1: pick(source="table", target="carrots")(Single arm, 5 seconds)
    A2: place(source="carrots", target="cutting_board")(Single arm, 7 seconds)
    A3: pick(source="counter", target="knife")(Single arm, 5 seconds)
    A4: cut(source="knife", target="carrots")(Dual arm, 10 seconds)
    A5: place(source="knife", target="counter")(Single arm, 5 seconds)

    Package B: Make apple salad
    B1: pick(source="table", target="apples")(Single arm, 5 seconds)
    B2: place(source="apples", target="cutting_board")(Single arm, 7 seconds)
    B3: pick(source="counter", target="knife")(Single arm, 5 seconds)
    B4: cut(source="knife", target="apples")(Dual arm, 10 seconds)
    B5: place(source="knife", target="counter")(Single arm, 5 seconds)

    Package C: Make cream bread
    C1: pick(source="shelf", target="plate")(Single arm, 5 seconds)
    C2: place(source="plate", target="table")(Single arm, 6 seconds)
    C3: pick(source="table", target="bread")(Single arm, 5 seconds)
    C4: place(source="bread", target="plate")(Single arm, 8 seconds)
    C5: flap_open(target="refrigerator")(Single arm, 3 seconds)
    C6: pick(source="refrigerator", target="butter")(Single arm, 5 seconds)
    C7: flap_close(target="refrigerator")(Single arm, 3 seconds)
    C8: stick_on(source="butter", target="bread")(Single arm, 8 seconds)
    C9: place(source="butter", target="table")(Single arm, 8 seconds)

    Package D: Make cheese sandwich
    D1: pick(source="shelf", target="plate")(Single arm, 5 seconds)
    D2: place(source="plate", target="table")(Single arm, 6 seconds)
    D3: pick(source="table", target="bread")(Single arm, 5 seconds)
    D4: place(source="bread", target="plate")(Single arm, 6 seconds)
    D5: flap_open(target="refrigerator")(Single arm, 3 seconds)
    D6: pick(source="refrigerator", target="cheese")(Single arm, 5 seconds)
    D7: flap_close(target="refrigerator")(Single arm, 3 seconds)
    D8: stick_on(source="cheese", target="bread")(Single arm, 6 seconds)
    D9: place(source="cheese", target="table")(Single arm, 5 seconds)
    Example output:
    Nodes:
    node_1:
    type: pick
    name: pick(source="table", target="carrots")
    arm_num: 1
    take_time: 5
    edge: []

    node_2:
    type: place
    name: place(source="carrots", target="cutting_board")
    arm_num: 1
    take_time: 7
    edge: [1]

    node_3:
    type: pick
    name: pick(source="table", target="apples")
    arm_num: 1
    take_time: 5
    edge: []

    node_4:
    type: place
    name: place(source="apples", target="cutting_board")
    arm_num: 1
    take_time: 7
    edge: [3]

    node_5:
    type: pick
    name: pick(source="counter", target="knife")
    arm_num: 1
    take_time: 5
    edge: [2, 4]

    node_6:
    type: cut
    name: cut(source="knife", target="carrots")
    arm_num: 2
    take_time: 10
    edge: [5]

    node_7:
    type: cut
    name: cut(source="knife", target="apples")
    arm_num: 2
    take_time: 10
    edge: [6]

    node_8:
    type: place
    name: place(source="knife", target="counter")
    arm_num: 1
    take_time: 5
    edge: [7]

    node_9:
    type: pick
    name: pick(source="shelf", target="plate")
    arm_num: 1
    take_time: 5
    edge: []

    node_10:
    type: place
    name: place(source="plate", target="table")
    arm_num: 1
    take_time: 6
    edge: [9]

    node_11:
    type: pick
    name: pick(source="table", target="bread")
    arm_num: 1
    take_time: 5
    edge: [10]

    node_12:
    type: place
    name: place(source="bread", target="plate")
    arm_num: 1
    take_time: 8
    edge: [11]

    node_13:
    type: flap_open
    name: flap_open(target="refrigerator")
    arm_num: 1
    take_time: 3
    edge: []

    node_14:
    type: pick
    name: pick(source="refrigerator", target="butter")
    arm_num: 1
    take_time: 5
    edge: [12, 13]

    node_15:
    type: pick
    name: pick(source="refrigerator", target="cheese")
    arm_num: 1
    take_time: 5
    edge: [12, 13]

    node_16:
    type: flap_close
    name: flap_close(target="refrigerator")
    arm_num: 1
    take_time: 3
    edge: [14, 15]

    node_17:
    type: stick_on
    name: stick_on(source="butter", target="bread")
    arm_num: 1
    take_time: 8
    edge: [14]

    node_18:
    type: place
    name: place(source="butter", target="table")
    arm_num: 1
    take_time: 8
    edge: [17]

    node_19:
    type: stick_on
    name: stick_on(source="cheese", target="bread")
    arm_num: 1
    take_time: 6
    edge: [15]

    node_20:
    type: place
    name: place(source="cheese", target="table")
    arm_num: 1
    take_time: 5
    edge: [19]

    node_21:
    type: task_completion
    name: task_completion
    arm_num: 0
    take_time: 0
    edge: [8, 18, 20]